解决vue中修改了数据但视图无法更新的情况

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决vue中修改了数据但视图无法更新的情况相关的知识,希望对你有一定的参考价值。

参考技术A 我们有时候常碰到vue中明明修改了数据,但是视图无法更新,因此我总结了一点点碰到此类的情况:
1、v-for遍历的数组,当数组内容使用的是arr[0].xx
=xx更改数据,vue无法监测到
数组数据变动:我们使用某些方法操作数组,变动数据时,有些方法无法被vue监测,有些可以
Vue包装了数个数组操作函数,使用这些方法操作的数组去,其数据变动时会被vue监测:
push()
pop()
shift()
unshift()
splice()
sort()
reverse()
vue2.0还增加个方法可以观测Vue.set(items,
indexOfItem,
newValue)
filter(),
concat(),
slice()
。这些不会改变原始数组,但总是返回一个新数组。当使用非变异方法时,可以用新数组替换旧数组
Vue
不能检测以下变动的数组:

当你利用索引直接设置一个项时,vm.items[indexOfItem]
=
newValue

当你修改数组的长度时,例如:
vm.items.length
=
newLength
话不多说,上代码,并且附上效果图:
<body>
<div
id="app">
<ul>
<li
v-for="(item,index)
in
gc">
<span>item.name-index</span>
<span>item.age-index</span>
</li>
</ul>
<button
@click="add">click</button>
</div>
<script>
new
Vue(
el:'#app',
data:
gc:[
name:'zhangsan',age:10,
name:'lisi',age:21,
name:'wangwu',age:22,
name:'wangwu',age:22
]
,methods:
//
当点击事件触发时候会修改掉gc[0]的值为lisi,但是视图不会发生变化
add()
this.gc[0]
=name:'lisi',age:22


)
</script>
</body>
以上Vue
不能检测数据变动的数组的2种方式解决办法
将代码中的add()方法改为:
add()
//
this.gc[0]
=name:'lisi',age:22
//这样直接修改不能被vue监听到
Vue.set(this.gc,0,name:'lisi',age:22)
//这样就能被vue监控到,更新视图

以上这篇解决vue中修改了数据但视图无法更新的情况就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
您可能感兴趣的文章:解决vue中对象属性改变视图不更新的问题vue
修改
data
数据问题并实时显示的方法

以上是关于解决vue中修改了数据但视图无法更新的情况的主要内容,如果未能解决你的问题,请参考以下文章

vue数据data中数组值改变不会更新视图解决

vue数组对象修改触发视图更新

vue的data修改之后界面未改变或错乱(各种情况)

解决vue中对象属性改变视图不更新的问题

关于vue子组件的数据变了视图不更新的解决办法(转载)

Vue data更新了,但视图未更新