请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

Setting data field "collected" to undefined is invalid.

这是怎么肥四啊,视频里data也是空的,不知道哪里错了

https://img1.sycdn.imooc.com//szimg/5a65ae9900019f1614510595.jpg

https://img1.sycdn.imooc.com//szimg/5a65ae9c0001563707340786.jpg


14894
收起

正在回答 回答被采纳积分+3

9回答

rzwww 2018-03-03 09:25:36
onLoad: function (option) {
var postId = option.id;
this.data.currentPostId = postId;
var postData = postsData.postList[postId];
this.setData({
postData: postData
});
var postsCollected = wx.getStorageSync('posts_collected')
var postCollected = postsCollected[postId];
if (postsCollected) {
    if (postCollected) {
    this.setData({
    collected: postCollected
    })
   }
 }
else {
  var postsCollected = {};
  postsCollected[postId] = false;
  wx.setStorageSync('posts_collected', postsCollected);
 }
},

这样写就对了。加一个判断postCollected再setData。

13 回复 有任何疑惑可以回复我~
  • 顶一个,实用
    回复 有任何疑惑可以回复我~ 2018-04-12 15:32:21
  • 咩仔 #2
    这部分代码折腾我太久了,照视频代码敲一直是undefined
    感谢解决!
    回复 有任何疑惑可以回复我~ 2018-04-22 14:41:45
  • 为什么是加判断?
    回复 有任何疑惑可以回复我~ 2018-06-11 19:35:33
慕斯卡2418527 2018-03-01 01:19:05

老师的代码不对;

我修改了一下,这个是没有问题的,供参考;

var postsCollection = wx.getStorageSync('postsCollection')
if (postsCollection) {
var postCollection = postsCollection[postId];
if (!postCollection) {
postsCollection[postId] = false;
wx.setStorageSync('postsCollection', postsCollection)
}
else {
this.setData({
collection: postCollection
})
}

}
else {
postsCollection = {};
postsCollection[postId] = false;
wx.setStorageSync('postsCollection', postsCollection);
}


3 回复 有任何疑惑可以回复我~
  • 7七月 #1
    源码具体哪里不对?可否说一下?
    回复 有任何疑惑可以回复我~ 2018-03-01 02:11:00
  • Pummbaa 回复 7七月 #2
    老师判断了postCollected是不是存在,却没有判断postsCollected[postId]是不是存在,所以当postsCollected[postId]不存在时postCollected 会被赋值为undefined ,然后导致setData的时候会报错
    回复 有任何疑惑可以回复我~ 2018-03-01 23:12:43
  • 7七月 回复 Pummbaa #3
    我调试了一下代码。又回想了以下,这里不判断也是没问题的。即使collected是 undefined,这个状态也是false的,不会有影响。但是我这里确实没有报错。
    回复 有任何疑惑可以回复我~ 2018-03-02 08:36:07
慕容5120236 2018-03-23 16:49:05

清除缓存之后在运行一次就行了,具体原因不知道

1 回复 有任何疑惑可以回复我~
7七月 2018-03-03 11:30:47

3.2 日更新的源码已经加上了判断,大家可以下载源码看一下。

1 回复 有任何疑惑可以回复我~
走在路上的小菜鸟 2018-02-05 16:55:59

同学我感觉是这里出问题了这个if判断,你想老师是对整个postsCollected做是否为空判断,并且没有初始化整个postCollected那假如这里边有一个元素了呢?判断就不会走else所以导致报你说的那个错误。触发这个错误的操作是,每当第二次单击进入某个未访问过的详情页面则会出现这个错误。https://img1.sycdn.imooc.com//szimg/5a781b700001ef4610110426.jpg

1 回复 有任何疑惑可以回复我~
  • 请问您是怎么解决这个问题
    回复 有任何疑惑可以回复我~ 2018-06-13 16:22:06
qq_葬xs雨_0 2018-09-10 18:24:26

https://img1.sycdn.imooc.com//szimg/5b9645f0000163a508930308.jpg

当点完第一篇文章, 在点第二篇文章时会 postid  为 undefined 

0 回复 有任何疑惑可以回复我~
慕沐8117363 2018-06-18 20:28:16

我也感觉,折腾死我了。这个必须要汇报下,

0 回复 有任何疑惑可以回复我~
用户1125510 2018-04-15 19:09:33

post.js那个页面中打开的id没有传过去  你改成 url: "post-detail/post-detail?id=" + postId

0 回复 有任何疑惑可以回复我~
7七月 2018-01-23 06:12:22

这个就是js代码有问题,你把collected绑定到了一个undefined对象上。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信