当我们使用vue开发时经常会遇到当vue实例已经创建好了,有时候需要再次给数据赋值时,并不能在视图中改变
(1)数组的双向绑定
原因:直接通过下标改变数组,Vue将不会监听到数据的改变
解决方法: 使用Vue.set()修改列表内容
Vue.set(list, index, value)
参数1 list: 要修改的对象
参数2 index: 属性(下标)
参数3 value: 属性的值(该下标所对应的值)
返回值:已经修改好的值
注意:会直接改变原来list的值
例如:将items中下标1处的值 修改为e Vue.set (this.items, 1, 'e')
var vm =new Vue({
el:'#app',
data:{
items:['a', 'b', 'c']
},
methods:{
btn(){
Vue.set(this.items, 1, 'e')
console.log(this.items)
}
}
})
(2)对象的双向绑定
Vue.set( 对象名/数组名, 对象中要修改的属性名/数组下标, 修改后的值 )
- 参数1:想要修改的数组或者对象 {Object | Array} target
- 参数2:想要修改的对象名称或者对应的下标
- 参数3:想要修改成功后的值
- 返回的值:是第三个参数 value
例:修改对象obj的属性nodianzanflag的值为[1,2,3]
let obj = this.dryingList[ind];
Vue.set(obj, "nodianzanflag", [1,2,3]);