Setting data field "collected" to undefined is invalid.

来源:19-7 使用缓存实现文章收藏功能

慕勒6950834

2018-01-22

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

http://img.mukewang.com/szimg/5a65ae9900019f1614510595.jpg

http://img.mukewang.com/szimg/5a65ae9c0001563707340786.jpg


写回答

9回答

rzwww

2018-03-03

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
5
慕九州4055073
回复
qq_孟家小狐狸_0
前面一个 if (postsCollected) { ...}只是表示确定了这个数组存在,而不能保证这个数组的这个元素存在,比如数组A里面有a[1] a[2]两个元素 你要找a[3],就会报错 --个人猜想
2019-03-13
共5条回复

慕斯卡2418527

2018-03-01

老师的代码不对;

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

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
11
夜阑卧听风吹雨y
回复
qq_少年你已不再年少
亲,怎么解决的,我也是这个问题
2018-09-05
共11条回复

慕容5120236

2018-03-23

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

1
0

7七月

2018-03-03

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

1
0

走在路上的小菜鸟

2018-02-05

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

1
1
慕九州7244340
请问您是怎么解决这个问题
2018-06-13
共1条回复

qq_葬xs雨_0

2018-09-10

//img.mukewang.com/szimg/5b9645f0000163a508930308.jpg

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

0
0

慕沐8117363

2018-06-18

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

0
0

用户1125510

2018-04-15

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

0
0

7七月

2018-01-23

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

0
6
慕九州7244340
回复
慕斯卡2418527
用你的的确解决了这个问题,谢谢
2018-06-13
共6条回复

微信小程序入门与实战(全新版) 超20000人学习的好课

4年同步微信官方迭代,累计20000+人学习, 比微信官方更火爆!

23867 学习 · 6899 问题

查看课程