错误做法:
直接对数据元素进行更改,错误做法:
// 不能动态响应
this.photoArr[index].weight= 200;
这种修改方式确实把数据给更改成功了,在控制台也能够打印出更改后的值,但是页面不会同步更新。原因如下:
列如:
var vm = new Vue({
data: {
item: ['a', 'b', 'c']
}
})
vm.item[1] = 'x' // 不是响应性的
vm.item.length = 2 // 不是响应性的
正确做法:
vue.js
在vue.js中直接使用$set()方法进行更新
参考地址:cn.vuejs.org/v2/guide/re…
uni-app
// 直接更新数组某个元素的属性,视图上不会同步更新,要使用这种方式。
/**
* @param photoArr 所要更新的数组
* @param pIndex 所要更新的数组的哪一项
* @param pItem 更新后的值
*/
that.$set(that.photoArr, pIndex, pItem);
实例:
data(){
return {
list:[
{name:123,id:1},
{name:"测试",id:2}
]
}
}
mounted() {
this.list[2] = {name:"最新数据,但不能同步渲染",id:3};
console.log(this.list[2]);//控制台已经打印出来了
this.$set(this.list,2,{name:"最新数据",id:3});//用this.$set方法把更新的数据更新到视图上去
}
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!