时间:2019-05-03 来源:小程序工厂
https://developers.weixin.qq.com/community/develop/doc/000c68601d0b402a45672ee5b5b000
include了解下
let arr= this.data.items;arr[1].checked = truethis.setData({ items: arr
});console.log(this.data.items);就ok了
es6 语法中对象属性可以使用表达式
let items = this.data.items;
this.setData({
['items[' + 1 + '].checked']: true
})
console.log(that.data.items) //这种做法发现打印出来的数据没有变化
http://es6.ruanyifeng.com/#docs/object
还有一种方式:
let itemsObj = {};
const index = 1;
itemsObj['items[' + index + '].checked'] = true;
this.setData(itemsObj);
console.log(this.data.items);
嗯嗯,谢谢,这种方式我还没试过,我找到了我的错误之处,就是setData的时候checked,少写了一个[]包起来
that.setData({[checked:true]});
这样就可以了
数组里这样写不报错?
that.setData({[checked]:true});
写错了。。。
数组里面给某一个元素重新赋值,讲道理,是这样写的,因为我之前那个项目是这样做的,这下子莫名其妙不行了,不知道哪里写错了
that.setData({[checked]:true});
这样写是对的。
学到了
说不定你打印checked 还能打印出个 true
打印checked就是一个字符串:items[1].checked
你这个本身就有问题的。
var checked = "items[" + 1 + "].checked" 你这里给checked 赋值是"items[" + 1 + "].checked"这样的一个字符串。
然后你打印的是不是直接console.log(checked)? 你这样打印肯定是出来的是这个字符串
你应该打印console.log(that.data.checked)。你这样打印出来的就是你刚刚setData的结果了。应该是 ture
为什么一定要用 this.setData 呢? 直接用 this.data.items[1].checked = true 不行呢? 是没有响式么?
那你如果不用setData就能把data里的值修改了,也行啊。你可以试一试呗