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


Posted in Javascript onAugust 27, 2018

我们有时候常碰到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中修改了数据但视图无法更新的情况

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

以上Vue 不能检测数据变动的数组的2种方式解决办法

将代码中的add()方法改为:

add(){
  // this.gc[0] ={name:'lisi',age:22} //这样直接修改不能被vue监听到
  Vue.set(this.gc,0,{name:'lisi',age:22}) //这样就能被vue监控到,更新视图    
 }

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

以上这篇解决vue中修改了数据但视图无法更新的情况就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript使用onclick事件改变选中行的颜色
Dec 30 Javascript
js操作IE浏览器弹出浏览文件夹可以返回目录路径
Jul 14 Javascript
使用AngularJS实现表单向导的方法
Jun 19 Javascript
基于JavaScript实现移动端点击图片查看大图点击大图隐藏
Nov 04 Javascript
vue中渐进过渡效果实现
Oct 27 Javascript
JS实现点击网页判断是否安装app并打开否则跳转app store
Nov 18 Javascript
js模拟微博发布消息
Feb 23 Javascript
JavaScript中递归实现的方法及其区别
Sep 12 Javascript
HTML5开发Kinect体感游戏的实例应用
Sep 18 Javascript
Vue 中使用vue2-highcharts实现曲线数据展示的方法
Mar 05 Javascript
node.js之基础加密算法模块crypto详解
Sep 11 Javascript
基于vue与element实现创建试卷相关功能(实例代码)
Dec 07 Vue.js
解决vue接口数据赋值给data没有反应的问题
Aug 27 #Javascript
vue 修改 data 数据问题并实时显示的方法
Aug 27 #Javascript
Node.js连接Sql Server 2008及数据层封装详解
Aug 27 #Javascript
解决vue中修改export default中脚本报一大堆错的问题
Aug 27 #Javascript
vue.js 图片上传并预览及图片更换功能的实现代码
Aug 27 #Javascript
JS常见构造模式实例对比分析
Aug 27 #Javascript
Vue.js图片预览插件使用详解
Aug 27 #Javascript
You might like
详解PHP导入导出CSV文件
2014/11/03 PHP
利用php获得flv视频长度的实例代码
2017/10/26 PHP
PHP+Session防止表单重复提交的解决方法
2018/04/09 PHP
php实现将数组或对象写入到文件的方法小结【三种方法】
2020/04/22 PHP
json跟xml的对比分析
2008/06/10 Javascript
jQuery getJSON 处理json数据的代码
2010/07/26 Javascript
javascript实现限制上传文件大小
2015/02/06 Javascript
jQuery跨域问题解决方案
2015/08/03 Javascript
JavaScript生成SQL查询表单的方法
2015/08/13 Javascript
基于JavaScript实现右键菜单和拖拽功能
2016/11/28 Javascript
Angular JS数据的双向绑定详解及实例
2016/12/31 Javascript
基于zepto.js实现登录界面
2017/10/09 Javascript
vue 2.x 中axios 封装的get 和post方法
2018/02/28 Javascript
Angular6 Filter实现页面搜索的示例代码
2018/12/02 Javascript
微信小程序mpvue点击按钮获取button值的方法
2019/05/29 Javascript
layui问题之渲染数据表格时,仅出现10条数据的解决方法
2019/09/12 Javascript
JS 图片压缩原理与实现方法详解
2020/04/29 Javascript
在vue中使用el-tab-pane v-show/v-if无效的解决
2020/08/03 Javascript
vue Treeselect下拉树只能选择第N级元素实现代码
2020/08/31 Javascript
基于p5.js 2D图像接口的扩展(交互实现)
2020/11/30 Javascript
[01:03:47]VP vs NewBee Supermajor 胜者组 BO3 第一场 6.5
2018/06/06 DOTA
一些Python中的二维数组的操作方法
2015/05/02 Python
Python使用matplotlib实现绘制自定义图形功能示例
2018/01/18 Python
Python中list查询及所需时间计算操作示例
2018/06/21 Python
如何使用Flask-Migrate拓展数据库表结构
2019/07/24 Python
Python中变量的输入输出实例代码详解
2019/07/28 Python
Python列表如何更新值
2020/05/27 Python
python空元组在all中返回结果详解
2020/12/15 Python
Loreto Gallo英国:欧洲领先的在线药房
2021/01/21 全球购物
新闻记者实习自我鉴定
2013/09/19 职场文书
党校学习思想汇报
2014/01/06 职场文书
公司司机岗位职责
2014/02/07 职场文书
公司会议策划方案
2014/05/17 职场文书
三方股东合作协议书范本
2014/09/28 职场文书
办公室务虚会发言材料
2014/10/20 职场文书
离开雷锋的日子观后感
2015/06/09 职场文书