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 继承机制的实现
Aug 12 Javascript
学习ExtJS accordion布局
Oct 08 Javascript
基于jquery的DIV随滚动条滚动而滚动的代码
Jul 20 Javascript
基于jquery打造的百分比动态色彩条插件
Sep 19 Javascript
使用GruntJS构建Web程序之合并压缩篇
Jun 06 Javascript
jquery实现滑屏大图定时收缩为小banner图片的广告代码
Sep 02 Javascript
js 实现获取name 相同的页面元素并循环遍历的方法
Feb 14 Javascript
Vue.js中组件中的slot实例详解
Jul 17 Javascript
jquery 输入框查找关键字并提亮颜色的实例代码
Jan 23 jQuery
layer关闭当前窗口页面以及确认取消按钮的方法
Sep 09 Javascript
微信小程序pinker组件使用实现自动相减日期
May 07 Javascript
vue中data里面的数据相互使用方式
Jun 05 Vue.js
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自带函数给数字或字符串自动补齐位数
2014/07/29 PHP
ImageZoom 图片放大镜效果(多功能扩展篇)
2010/04/14 Javascript
Jquery从头学起第四讲 jquery入门教程
2010/08/01 Javascript
js 静态动态成员 and 信息的封装和隐藏
2011/05/29 Javascript
js借助ActiveXObject实现创建文件
2013/09/29 Javascript
动态显示可输入的字数提示还可以输入的字数
2014/04/01 Javascript
jQuery实现html元素拖拽
2015/07/21 Javascript
详解JavaScript中的4种类型识别方法
2015/09/14 Javascript
浅谈JavaScript的全局变量与局部变量
2016/06/10 Javascript
使用jquery如何获取时间
2016/10/13 Javascript
jQuery插件ajaxFileUpload使用实例解析
2016/10/19 Javascript
jQuery得到多个值只能用取Class ,不能用取ID的方法
2016/12/04 Javascript
vue2.0 和 animate.css的结合使用
2017/12/12 Javascript
vue cli构建的项目中请求代理与项目打包问题
2018/02/26 Javascript
react router4+redux实现路由权限控制的方法
2018/05/03 Javascript
Vue官方推荐AJAX组件axios.js使用方法详解与API
2018/10/09 Javascript
layui 表单标签的校验方法
2019/09/04 Javascript
Vue select 绑定动态变量的实例讲解
2020/10/22 Javascript
Nodejs + sequelize 实现增删改查操作
2020/11/07 NodeJs
Python天气预报采集器实现代码(网页爬虫)
2012/10/07 Python
Python2.x中文乱码问题解决方法
2015/06/02 Python
Pandas之ReIndex重新索引的实现
2019/06/25 Python
Pycharm新建模板默认添加个人信息的实例
2019/07/15 Python
基于Python数据分析之pandas统计分析
2020/03/03 Python
详解Python直接赋值,深拷贝和浅拷贝
2020/07/09 Python
css3截图_动力节点Java学院整理
2017/07/11 HTML / CSS
使用phonegap播放音频的实现方法
2017/03/31 HTML / CSS
阿拉伯世界最大的电子卖场:Souq埃及
2016/08/01 全球购物
ALDO美国官网:加拿大女鞋品牌
2018/12/28 全球购物
澳大利亚最好的电动自行车:Leon Cycle
2020/12/19 全球购物
会计专业的自荐信
2013/12/12 职场文书
硕士研究生自我鉴定范文
2013/12/27 职场文书
房屋出租协议书
2014/04/10 职场文书
城南旧事电影观后感
2015/06/16 职场文书
oracle通过存储过程上传list保存功能
2021/05/12 Oracle
springBoot基于webSocket实现扫码登录
2021/06/22 Java/Android