关于vue给对象新增属性页面不会动态更新
不知道大家有没有遇到过这个问题,当我们给data里边声明或者已经赋值过的对象或者数组,添加新的属性时,如果更新此属性的值是不会动态更新视图的。
$set
看以下实例:
我们开始给drug_list追加一个新的属性‘edit_select’,默认所有的编辑状态为false,当我们点击的时候,把当前点击的编辑状态置为true
作者:_conquer_
链接:https://www.jianshu.com/p/c457cfe7d713
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
<div id="box">
<div v-for="drug_item in drug_list" @click="choose(drug_item)">
<a :class="{pressed:drug_item.edit_select}"></a>
<span>{{drug_item.drug_common_name}}{{drug_item.edit_select}}</span>
</div>
</div>
<script>
var vm = new Vue({
el:'#box',
data:{
drug_list:[
{drug_common_name: "辛伐他汀片",drug_count: "1"},
{drug_common_name: "喉疾灵片",drug_count: "2"},
{drug_common_name: "乐脉胶囊",drug_count: "3"},
]
},
created:function(){
this.setData();
},
methods: {
setData:function(){
for(var i=0;i<this.drug_list.length;i++){
this.drug_list[i]['edit_select']=false;
}
},
choose:function(item){
item.edit_select=true;
console.log(item)
},
}
})
</script>
我们打印一下点击之后的数据会发现数据已经改了

但是我们看一下页面效果,会发现并没有添加上class,把数据在页面上打印一下会发现,页面上面的‘edit_select’并没有动态更改

这是为什么呢?
仔细阅读官方文档,我们会发现:
Vue 不允许在已经创建的实例上动态添加新的根级响应式属性, Vue 无法探测普通的新增属性
怎么办呢?
Vue.set( target, key, value )
- 参数:
{Object | Array} target
{string | number} key
{any} value - 返回值:设置的值。
我们只需要把下面的改一下就可以了
for(var i=0;i<this.drug_list.length;i++){
//this.drug_list[i]['edit_select']=false;
that.$set(this.drug_list[i], 'edit_check', false);
}
关于vue给对象新增属性页面不会动态更新的更多相关文章
- vue修改对象的属性值后页面不重新渲染
原文地址:vue修改对象的属性值后页面不重新渲染 最近项目在使用vue,遇到几次修改了对象的属性后,页面并不重新渲染,场景如下: HTML页面如下: [html] view plain copy &l ...
- Vue-给对象新增属性(使用Vue.$set())
在开发过程中,我们时常会遇到这样一种情况:当vue的data里边声明或者已经赋值过的对象或者数组(数组里边的值是对象)时,向对象中添加新的属性,如果更新此属性的值,是不会更新视图的. 根据官方文档定义 ...
- vue新增属性是否会响应式更新?
原文地址 在开发过程中,我们时常会遇到这样一种情况:当vue的data里边声明或者已经赋值过的对象或者数组(数组里边的值是对象)时,向对象中添加新的属性,如果更新此属性的值,是不会更新视图的. 根据官 ...
- Vue 给对象添加属性
坑真多,没想到很多小细节都 改了,我添加个属性都 折腾了半天才看明白原因 Vue.set(row,"isEdit",false); //给row对象新增一个isEdit的属性.
- VUE不能对新增属性监测更新
data () { return { data:{}, } }, method:{ if(data.code==0){ this.loading = false; this.data = data.d ...
- VUE 动态给对象增加属性,并触发视图更新。
在开发过程中,我们时常会遇到这样一种情况:当vue的data里边声明或者已经赋值过的对象或者数组(数组里边的值是对象)时,向对象中添加新的属性,如果更新此属性的值,是不会更新视图的. 根据官方文档定义 ...
- jquery ajax 返回的json对象 新增属性值(干货)
$.ajax({ type:"GEt'; url:"你的地址", data:{"你的字段","字段值"} success:funt ...
- 遍历json 对象的属性并且动态添加属性
昨天因为公司的一个需求,所以就研究了一下json对象的属性的遍历和动态修改: var person= { name: 'zhangsan', pass: '123' , 'sni.ni' : 'sss ...
- vue 数组中嵌套的对象添加新属性--页面更新
vue 数组中嵌套的对象添加新属性--页面更新:https://www.jianshu.com/p/8f0e5bb13735
随机推荐
- python3抓取中国天气网不同城市7天、15天实时数据
思路:1.根据city.txt文档来获取不同城市code2.获取中国天气网7d和15d不同城市url3.利用requests库请求url获取html内容4.利用beautifulsoup获取7d和15 ...
- MongoDB数据库的操作
一.操作MongoDB数据库 1.创建数据库 语法:ues 注意:如果数据库不存在则再创建数据库,否则切换到指定的 数据库!如果刚刚创建的数据不在列表中,如果需要显示这个数 据库,那么需要在刚刚创建的 ...
- 组合&多态&封装
目录 组合&多态&封装 一.组合 1.1什么是组合 1.2 为什么要用组合 1.3 如何使用组合 1.4 继承和组合都在什么时候用 二.多态与多态性 2.1 什么是多态 2.2 如何用 ...
- 从头到尾说一次 Java 垃圾回收,写得非常好! (转)
之前上学的时候有这个一个梗,说在食堂里吃饭,吃完把餐盘端走清理的,是 C++ 程序员,吃完直接就走的,是 Java 程序员.
- ES的索引、type、document、filer、mapping、id
一.ES的存储结构 1.索引 es 中存储数据的基本单位,比如说你现在要在 es 中存储一些订单数据,你就应该在 es 中创建一个索引 order_idx,所有的订单数据就都写到这个索引里面去.看了一 ...
- express做登录判断
1)JWT试试 https://github.com/penguinab/express-jwt 2)express session https://github.com/whevether/reac ...
- unittest assert断言
unittest常用的断言方法 1.assertEqual(self, first, second, msg=None) --判断两个参数相等:first == second 2.assertNotE ...
- 【应用容器引擎】Docker笔记
一.Docker是什么? Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的linux机器上,也可以实现虚拟化.它是一个轻量级容器技 ...
- pause模块
pause模块:暂停脚本执行 # ansible-doc -s pause- name: Pause playbook execution pause: minutes: // 暂停的真实分钟数 pr ...
- lnmp 环境搭建后,pathinfo 模式支持的配制。
ThinkPHP的四种URL模式:0(普通模式);1(PATHINFO模式);2(REWRITE模式);3(兼容模式) nginx需要PATHINFO模式,但需要更改nginx配置文件让其支持PATH ...