采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
这是怎么肥四啊,视频里data也是空的,不知道哪里错了
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。
顶一个,实用
这部分代码折腾我太久了,照视频代码敲一直是undefined 感谢解决!
为什么是加判断?
老师的代码不对;
我修改了一下,这个是没有问题的,供参考;
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); }
源码具体哪里不对?可否说一下?
老师判断了postCollected是不是存在,却没有判断postsCollected[postId]是不是存在,所以当postsCollected[postId]不存在时postCollected 会被赋值为undefined ,然后导致setData的时候会报错
我调试了一下代码。又回想了以下,这里不判断也是没问题的。即使collected是 undefined,这个状态也是false的,不会有影响。但是我这里确实没有报错。
清除缓存之后在运行一次就行了,具体原因不知道
3.2 日更新的源码已经加上了判断,大家可以下载源码看一下。
同学我感觉是这里出问题了这个if判断,你想老师是对整个postsCollected做是否为空判断,并且没有初始化整个postCollected那假如这里边有一个元素了呢?判断就不会走else所以导致报你说的那个错误。触发这个错误的操作是,每当第二次单击进入某个未访问过的详情页面则会出现这个错误。
请问您是怎么解决这个问题
当点完第一篇文章, 在点第二篇文章时会 postid 为 undefined
我也感觉,折腾死我了。这个必须要汇报下,
post.js那个页面中打开的id没有传过去 你改成 url: "post-detail/post-detail?id=" + postId
这个就是js代码有问题,你把collected绑定到了一个undefined对象上。
我也出现过这问题,可是代码一样,视频中怎么没出现问题
找到问题了吗?我也出现了,但是单步了半天也没找到错误,我运行老师的程序同样有问题。
怎么解决啊
登录后可查看更多问答,登录/注册
4年同步微信官方迭代,累计20000+人学习, 比微信官方更火爆!
15.2k 32
3.1k 24
3.1k 22
1.4k 22
976 16