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 的 prototype问题。
Jan 03 Javascript
来自chinaz的ajax获取评论代码
May 03 Javascript
js 获取、清空input type=&quot;file&quot;的值(示例代码)
Dec 24 Javascript
Javascript实现带关闭按钮的网页漂浮广告代码
Jan 12 Javascript
js实现两点之间画线的方法
May 12 Javascript
基于jQuery实现Div窗口震动特效代码-代码简单
Aug 28 Javascript
js判断手机访问或者PC的几个例子(常用于手机跳转)
Dec 15 Javascript
Underscore源码分析
Dec 30 Javascript
checkbox批量选中,获取选中项的值的简单实例
Jun 28 Javascript
使用UrlConnection实现后台模拟http请求的简单实例
Jan 04 Javascript
解决vue 打包发布去#和页面空白的问题
Sep 04 Javascript
详解vue中使用vue-quill-editor富文本小结(图片上传)
Apr 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执行.SQL文件
2013/07/05 PHP
PHP函数import_request_variables()用法分析
2016/04/02 PHP
PHP自定义错误用法示例
2016/09/28 PHP
phpstudy2018升级MySQL5.5为5.7教程(图文)
2018/10/24 PHP
php创建多级目录与级联删除文件的方法示例
2019/09/12 PHP
JavaScript使用prototype定义对象类型
2007/02/07 Javascript
JQuery从头学起第二讲
2010/07/04 Javascript
js滚动条回到顶部的代码
2011/12/06 Javascript
js自定义事件及事件交互原理概述(一)
2013/02/01 Javascript
JS截取字符串常用方法详细整理
2013/10/28 Javascript
js钢琴按钮波浪式图片排列效果代码分享
2015/08/26 Javascript
angular directive的简单使用总结
2017/05/24 Javascript
详解windows下vue-cli及webpack 构建网站(二)导入bootstrap样式
2017/06/17 Javascript
jQuery实现文字超过1行、2行或规定的行数时自动加省略号的方法
2018/03/28 jQuery
vue项目中使用fetch的实现方法
2019/04/25 Javascript
基于layPage插件实现两种分页方式浅析
2019/07/27 Javascript
jQuery实现消息弹出框效果
2019/12/10 jQuery
[51:27]LGD vs Liquid 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
windows系统中python使用rar命令压缩多个文件夹示例
2014/05/06 Python
Python的Scrapy爬虫框架简单学习笔记
2016/01/20 Python
JSONLINT:python的json数据验证库实例解析
2017/11/28 Python
对python添加模块路径的三种方法总结
2018/10/16 Python
让Python脚本暂停执行的几种方法(小结)
2019/07/11 Python
Python 闭包,函数分隔作用域,nonlocal声明非局部变量操作示例
2019/10/14 Python
关于Pytorch的MLP模块实现方式
2020/01/07 Python
matlab中二维插值函数interp2的使用详解
2020/04/22 Python
全球最大的在线橄榄球商店:Lovell Rugby
2018/05/20 全球购物
Java面试题:Java类的Main方法如果是Private将会怎么样
2016/08/18 面试题
优秀党员转正的自我评价
2013/10/06 职场文书
运动会解说词100字
2014/01/31 职场文书
省文明单位申报材料
2014/05/08 职场文书
2014年党建工作总结
2014/11/11 职场文书
2016年“5.12”护士节慰问信
2015/11/30 职场文书
python 调用js的四种方式
2021/04/11 Python
Html5通过数据流方式播放视频的实现
2021/04/27 HTML / CSS
mysql中整数数据类型tinyint详解
2021/12/06 MySQL