vue $set 给数据赋值的实例


Posted in Javascript onNovember 09, 2019

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

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

DOM树

<div class="cartContent" :class="{'bg' : status == 2}" v-for="(val,key) in imgListData" :id="key">
<div class="choose">
![](../assets/img/radio-checked.png)
![](../assets/img/radio-nochecked.png)
</div>
.........
</div>

模拟数据

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方法。错误展示:

vue $set 给数据赋值的实例

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

以上这篇vue $set 给数据赋值的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript 去除数组的重复元素
May 04 Javascript
Javascript面向对象编程
Mar 18 Javascript
JS实现一键回顶功能示例代码
Oct 28 Javascript
Javascript常用小技巧汇总
Jun 24 Javascript
深入理解JavaScript定时机制
Oct 27 Javascript
JS产生随机数的用法小结
Dec 10 Javascript
vue-router配合ElementUI实现导航的实例
Feb 11 Javascript
在Vuex使用dispatch和commit来调用mutations的区别详解
Sep 18 Javascript
js自定义input文件上传样式
Oct 26 Javascript
vuex vue简单使用知识点总结
Aug 29 Javascript
解决vue项目运行提示Warnings while compiling.警告的问题
Sep 18 Javascript
基于Ionic3实现选项卡切换并重新加载echarts
Sep 24 Javascript
Vue 数组和对象更新,但是页面没有刷新的解决方式
Nov 09 #Javascript
使用Vue.set()方法实现响应式修改数组数据步骤
Nov 09 #Javascript
vue实现页面内容禁止选中功能,仅输入框和文本域可选
Nov 09 #Javascript
Vue 实现复制功能,不需要任何结构内容直接复制方式
Nov 09 #Javascript
Vue实现点击按钮复制文本内容的例子
Nov 09 #Javascript
JS实现的进制转换,浮点数相加,数字判断操作示例
Nov 09 #Javascript
JS+html5实现异步上传图片显示上传文件进度条功能示例
Nov 09 #Javascript
You might like
PHP中数组合并的两种方法及区别介绍
2012/09/14 PHP
PHP中fwrite与file_put_contents性能测试代码
2013/08/02 PHP
PHP中使用GD库创建圆形饼图的例子
2014/11/19 PHP
使用PHP和JavaScript判断请求是否来自微信内浏览器
2015/08/18 PHP
PHP Header用于页面跳转时的几个注意事项
2016/10/21 PHP
jQuery Ajax提交表单查询获得数据实例代码
2012/09/19 Javascript
javascript测试题练习代码
2012/10/10 Javascript
原生js实现半透明遮罩层效果具体代码
2013/06/06 Javascript
JS自调用匿名函数具体实现
2014/02/11 Javascript
JS实现图片无间断滚动代码汇总
2014/07/30 Javascript
JQuery中DOM加载与事件执行实例分析
2015/06/13 Javascript
js下将金额数字每三位一逗号分隔
2016/02/19 Javascript
js运动事件函数详解
2016/10/21 Javascript
数组Array的一些方法(总结)
2017/02/17 Javascript
微信小程序 PHP生成带参数二维码
2017/02/21 Javascript
深入理解JavaScript创建对象的多种方式以及优缺点
2017/06/01 Javascript
element-ui 限制日期选择的方法(datepicker)
2018/05/16 Javascript
webpack4 入门最简单的例子介绍
2018/09/05 Javascript
微信小程序设置全局请求URL及封装wx.request请求操作示例
2019/04/02 Javascript
echarts统计x轴区间的数值实例代码详解
2019/07/07 Javascript
layer弹窗在键盘按回车将反复刷新的实现方法
2019/09/25 Javascript
vue轮播组件实现$children和$parent 附带好用的gif录制工具
2019/09/26 Javascript
Python 代码性能优化技巧分享
2012/08/07 Python
Python smtplib实现发送邮件功能
2018/05/22 Python
使用tensorflow DataSet实现高效加载变长文本输入
2020/01/20 Python
Python字符编码转码之GBK,UTF8互转
2020/02/09 Python
次世代生活态度:Hypebeast
2018/07/05 全球购物
NBA欧洲商店(英国):NBA Europe Store UK
2018/07/27 全球购物
阳光体育活动总结
2014/04/30 职场文书
股东授权委托书
2014/10/15 职场文书
评先进个人材料
2014/12/29 职场文书
老公保证书怎么写
2015/02/26 职场文书
2015年中秋晚会主持稿
2015/07/30 职场文书
2016年“六一儿童节”校园广播稿
2015/12/17 职场文书
python基础之停用词过滤详解
2021/04/21 Python
用Python进行栅格数据的分区统计和批量提取
2021/05/27 Python