vue 给div内赋值_vue $set 给数据赋值

在Vue实例创建后,直接添加属性无法触发视图更新。本文通过一个业务场景介绍如何处理这个问题:模拟后台数据,向DOM添加状态属性,根据状态改变图片。当尝试使用val.status=false时遇到问题,而使用this.$set(val, 'status', false)则能正确更新视图。此外,还展示了选择事件方法,用于切换数据状态并即时反映在样式上。" 114467746,10544300,Qt编程:QFileDialog详解及文件过滤使用,"['Qt编程', '文件对话框', '文件过滤']
摘要由CSDN通过智能技术生成

如果在实例创建之后添加新的属性到实例上,它不会触发视图更新。

业务介绍:模拟后台数据向DOM树上遍历数据,再向数据里添加状态属性,根据状态改变显示图片,默认nochecked.png,点击时改变状态。显示checked.png

DOM树

![](../assets/img/radio-checked.png)

![](../assets/img/radio-nochecked.png)

.........

模拟数据

data(){

return{

responseData:[

{'id':'1','name':'女装','price':115,'num':1,'pic':'../static/img/1.jpg'},

{'id':'2','name':'男装','price':110,'num':1,'pic':'../static/img/2.jpg'},

{'id':'3','name':'童装','price':118,'num':2,'pic':'../static/img/3.jpg'}

],

imgListData:[]

}

},

向原数据添加新属性status

created() {

this.allDataList()

},

methods:{

allDataList(){

for(let val of this.responseData){

// val.status=false;//写这个有问题

this.$set(val,'status',false)//此处为重点

this.imgListData.push(val)

}

console.log(this.imgListData)

}

点击事件(根据索引改变当前属性的状态)

choose(index){

if(this.imgListData[index].status){

this.imgListData[index].status=false;

}else{

this.imgListData[index].status=true

}

},

输出发现有status属性,状态也由false改为了true,但是就是样式要刷新一下才能显示。把里面的属性仔细看一遍原来status没有get/set方法。错误展示:

0af86d293099

微信图片_20171101155716.png

把 val.status=false; 改为this.$set(val,'status',false)问题就解决了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值