vue数组更新了但是视图view没有更新的问题
2018-04-25 14:24
302 查看
先来个vue的知识点
数组更新检测
变异方法
Vue 包含一组观察数组的变异方法,所以它们也将会触发视图更新。这些方法如下:
push()
pop()
shift()
unshift()
splice()
sort()
reverse()
你打开控制台,然后用前面例子的
items数组调用变异方法:
example1.items.push({ message: 'Baz' })。
替换数组
变异方法 (mutation method),顾名思义,会改变被这些方法调用的原始数组。相比之下,也有非变异 (non-mutating method) 方法,例如:
filter(),
concat()和
slice()。这些不会改变原始数组,但总是返回一个新数组。当使用非变异方法时,可以用新数组替换旧数组:
example1.items = example1.items.filter(function (item) { return item.message.match(/Foo/) }) |
你可能认为这将导致 Vue 丢弃现有 DOM 并重新渲染整个列表。幸运的是,事实并非如此。Vue 为了使得 DOM 元素得到最大范围的重用而实现了一些智能的、启发式的方法,所以用一个含有相同元素的数组去替换原来的数组是非常高效的操作。
你也可以到 官网 查询知识点
再来实例,深入理解用用
html: <ul> <li v-for="(item ,index) in evaluate" :class="{active:item==1}" @mouseover="chooseEvaluate(index,evaluate)" @click="chooseEvaluate(index,evaluate)"></li> </ul> less: ul{ height: 20px; margin-bottom: 20px; li{ width: 20px; height: 20px; margin-right: 10px; cursor: pointer; float:left; background: url(../img/kongxinxx.png);//默认空心 } li.active{ background: url(../img/shixinxx.png);//active是实心 } } js: export default { data(){ return{ arr:[1,1,0,0,0],//1是代表实心,0是代表空心 } }, methods:{ chooseEvaluate(index,arr){ this.arr=this.changeArr(index,arr); this.arr.push();//更新数组view }, //根据当前index修改数组 changeArr(index,arr) { for(let i in arr){ if(i<=index){//小于当前点击的都是1 arr[i]=1 }else {//否则,大于当前的都是0 arr[i]=0 } } return arr } } } |
阅读更多
相关文章推荐
- vue数组中数据变化但是视图没有更新解决方案
- vue数组中数据变化但是视图没有更新解决方案
- vue数组中数据变化但是视图没有更新解决方案
- vue更改了数据但是视图却没有更新
- Vue $set 数组不能更新视图的问题
- vue数组操作不更新视图问题
- vue数组变化,视图没有更新
- vue数据绑定数组,改变元素时不更新view问题
- Vue.js列表渲染难点:对象中数组深度更新问题
- vue中对象属性改变视图不更新问题
- 解决vue中对象属性改变视图不更新的问题
- 进行拼音搜索过滤,没办法更新视图的问题(vue)
- Git之如何解决sourceTree已经pull全部下来但是本地没有更新的问题
- 解决IE11 vue +webpack 项目中数据更新后页面没有刷新的问题
- Vue 数组视图不能更新的解决方案
- vue.js移动数组位置,同时更新视图的方法
- Vue中数组和对象更改后视图不刷新的问题
- 一个SDI程序基于CFormView视。上面放一个CStatic控件,给视图添加双击消息,运行程序后,双击视图,会有弹出消息响应。 但是双击CStatic类控件,却没有响应
- 详解Vue中数组和对象更改后视图不刷新的问题
- vue v-for初始化后, 数组更新但视图没更新的处理