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 相关文章推荐
js自定义事件代码说明
Jan 31 Javascript
jQuery在html有效在jsp无效的原因及解决方法
Aug 02 Javascript
JavaScript原生对象之Number对象的属性和方法详解
Mar 13 Javascript
js实现按钮颜色渐变动画效果
Aug 20 Javascript
BootStrap入门教程(二)之固定的内置样式
Sep 19 Javascript
Vue.js动态添加、删除选题的实例代码
Sep 30 Javascript
Javascript使用SWFUpload进行多文件上传
Nov 16 Javascript
vue3.0 CLI - 2.6 - 组件的复用入门教程
Sep 14 Javascript
使用webpack打包后的vue项目如何正确运行(express)
Oct 26 Javascript
jQuery添加新内容的四个常用方法分析【append,prepend,after,before】
Mar 19 jQuery
浅谈一个webpack构建速度优化误区
Jun 24 Javascript
Vue  webpack 项目自动打包压缩成zip文件的方法
Jul 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 empty,isset,is_null判断比较(差异与异同)
2010/10/19 PHP
ThinkPHP中url隐藏入口文件后接收alipay传值的方法
2014/12/09 PHP
PHP聊天室简单实现方法详解
2018/12/08 PHP
验证用户是否修改过页面的数据的实现方法
2008/09/26 Javascript
Javascript基础知识(一)核心基础语法与事件模型
2014/09/29 Javascript
JavaScript中Number.NEGATIVE_INFINITY值的使用详解
2015/06/05 Javascript
node.js连接mongoDB数据库 快速搭建自己的web服务
2016/04/17 Javascript
JavaScript中解决多浏览器兼容性23个问题的快速解决方法
2016/05/19 Javascript
完美解决jQuery的hover事件在IE中不停闪动的问题
2017/02/10 Javascript
基于HTML5+JS实现本地图片裁剪并上传功能
2017/03/24 Javascript
ES6新特性二:Iterator(遍历器)和for-of循环详解
2017/04/20 Javascript
Angular2使用Augury来调试Angular2程序
2017/05/21 Javascript
详解利用jsx写vue组件的方法示例
2017/07/17 Javascript
vue组件实现文字居中对齐的方法
2017/08/23 Javascript
详解从新建vue项目到引入组件Element的方法
2017/08/29 Javascript
JS 实现缓存算法的示例(FIFO/LRU)
2018/03/20 Javascript
Vue中使用webpack别名的方法实例详解
2018/06/19 Javascript
微信小程序公用参数与公用方法用法示例
2019/01/09 Javascript
JavaScript实现随机点名小程序
2020/10/29 Javascript
解决vue init webpack 下载依赖卡住不动的问题
2020/11/09 Javascript
[02:53]DOTA2英雄基础教程 山岭巨人小小
2013/12/09 DOTA
Python数据结构与算法之完全树与最小堆实例
2017/12/13 Python
浅谈Matplotlib简介和pyplot的简单使用——文本标注和箭头
2018/01/09 Python
Django Channels 实现点对点实时聊天和消息推送功能
2019/07/17 Python
Python列表切片常用操作实例解析
2019/12/16 Python
使用Python 自动生成 Word 文档的教程
2020/02/13 Python
使用Python快速打开一个百万行级别的超大Excel文件的方法
2021/03/02 Python
css3的transition属性详解
2014/12/15 HTML / CSS
年度考核评语
2014/01/19 职场文书
葛优非诚勿扰搞笑征婚台词
2014/03/17 职场文书
小学老师寄语大全
2014/04/04 职场文书
社区矫正工作方案
2014/06/04 职场文书
小学二年级数学教学计划
2015/01/20 职场文书
2015公司年度工作总结
2015/05/14 职场文书
小学运动会通讯稿
2015/07/18 职场文书
python3 实现mysql数据库连接池的示例代码
2021/04/17 Python