解决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 相关文章推荐
JQuery获取或设置ckeditor的数据(示例代码)
Nov 15 Javascript
导入extjs、jquery 文件时$使用冲突问题解决方法
Jan 14 Javascript
使用Plupload实现直接上传附件至七牛云存储
Dec 26 Javascript
jQuery插件bxSlider实现响应式焦点图
Apr 12 Javascript
jQuery插件zepto.js简单实现tab切换
Jun 16 Javascript
Ext JS动态加载JavaScript创建窗体的方法
Jun 23 Javascript
jquery配合.NET实现点击指定绑定数据并且能够一键下载
Oct 28 Javascript
浅析JavaScript动画模拟拖拽原理
Dec 09 Javascript
Bootbox将后台JSON数据填充Form表单的实例代码
Sep 10 Javascript
angularjs的单选框+ng-repeat的实现方法
Sep 12 Javascript
JS实现灯泡开关特效
Mar 30 Javascript
关于JavaScript回调函数的深入理解
Jun 27 Javascript
解决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 n个不重复的随机数生成代码
2009/06/23 PHP
实用PHP会员权限控制实现原理分析
2011/05/29 PHP
PHP编程计算日期间隔天数的方法
2017/04/26 PHP
PHP使用CURL实现下载文件功能示例
2019/06/03 PHP
Javascript实现返回上一页面并刷新的小例子
2013/12/11 Javascript
14款NodeJS Web框架推荐
2014/07/11 NodeJs
js实现用户注册协议倒计时的方法
2015/01/21 Javascript
javascript表格的渲染组件
2015/07/03 Javascript
JQuery实现图片轮播效果
2015/09/15 Javascript
jQuery中的siblings用法实例分析
2015/12/24 Javascript
jQuery版AJAX简易封装代码
2016/09/14 Javascript
jQGrid Table操作列中点击【操作】按钮弹出按钮层的实现代码
2016/12/05 Javascript
js canvas实现QQ拨打电话特效
2017/05/10 Javascript
JS中的Replace()传入函数时的用法详解
2017/09/11 Javascript
详解JS中的this、apply、call、bind(经典面试题)
2017/09/19 Javascript
基于Three.js实现360度全景图片
2018/12/30 Javascript
JavaScript使用闭包模仿块级作用域操作示例
2019/01/21 Javascript
linux服务器快速卸载安装node环境(简单上手)
2021/02/22 Javascript
python实现基于两张图片生成圆角图标效果的方法
2015/03/26 Python
Python MySQLdb模块连接操作mysql数据库实例
2015/04/08 Python
python中的编码知识整理汇总
2016/01/26 Python
python如何使用代码运行助手
2020/07/03 Python
详解用python -m http.server搭一个简易的本地局域网
2020/09/24 Python
Python爬取某平台短视频的方法
2021/02/08 Python
基于HTML5+Webkit实现树叶飘落动画
2017/12/28 HTML / CSS
美国求婚钻戒网站:Super Jeweler
2016/08/27 全球购物
简历里的自我评价
2014/01/31 职场文书
省级优秀毕业生主要事迹
2014/05/29 职场文书
派出所副所长四风问题个人整改措施思想汇报
2014/10/13 职场文书
公务员保密工作承诺书
2015/05/04 职场文书
领导干部学习十八届五中全会精神心得体会
2016/01/05 职场文书
2016年学校“6﹒26国际禁毒日”宣传活动总结
2016/04/05 职场文书
导游词之无锡梅园
2019/11/28 职场文书
ConstraintValidator类如何实现自定义注解校验前端传参
2021/06/18 Java/Android
Nginx location 和 proxy_pass路径配置问题小结
2021/09/04 Servers
【海涛dota解说】一房久违的影魔魂守二连发
2022/04/01 DOTA