因为以前都是用Vue开发,写项目,自然而然的就习惯了vue的双向绑定机制,开发中也觉得这真是方便,但是在最近的小程序开发中,我在动态往数组中传值,可是吃尽了苦头,怎么绑都绑定不上。当然,也并不是再说小程序的不好,各有各的开发理念,各有各的好,所以在这里写下一些心得,一方面让自己别忘了,一方面也希望和我一起遇到这个问题的小伙伴们,别再走这个坑!
言归正传:
加入此刻我的data中,有一个数组
data: {
lists:[{}],
},
然后我定义了一个方法,需要往这个lists数组中动态的添加数据
<view bindtap="add"></view>
add(){
const a = {},
this.setData({
lists:this.data.lists.push(a)
})
}
这个方法是可以往data中的lists中添加对象的,这我相信大家都能做得到,很简单
但是,当我们要改变这个lists中某个对象下的key:value值呢?当时我就在这里卡了好久,我一开始想的的是在this.setData()这个函数中,把key值改为 lists[下标].属性值 但是当我这样写了以后,控制台立马报错,原因是因为,他在data中并没有找到你这个key值,也就是说我们这个写的方法是错误的,但是按照道理思路是没错的,所以也就有了下面这个方法,可以改变对应的lists里面的属性值
change(e){
//我这里动态绑定了属性data-index="你要改变的那个值的下标"
const a = `lists[${e.currenttarget.detail.index}].name`
this.setData({
[a]:e.detail.value//你要改变的值
})
}
这样就可以了,就能改变data中数组里面任意的值,不过要谨记一点,就是,一定要拿中括号[xx]包裹你要改变的key值,不然也是会报错的!好了,其实我感觉我说了很多没必要的话,但是,我就当记笔记了!希望大家和自己继续努力,学习永无止境