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

 更新时间:2018年08月27日 09:48:10   作者:物以稀为贵yeah  
今天小编就为大家分享一篇解决vue中修改了数据但视图无法更新的情况,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

我们有时候常碰到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+spring boot实现校验码功能

    vue+spring boot实现校验码功能

    这篇文章主要为大家详细介绍了vue+spring boot实现校验码功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • 让axios发送表单请求形式的键值对post数据的实例

    让axios发送表单请求形式的键值对post数据的实例

    今天小编就为大家分享一篇让axios发送表单请求形式的键值对post数据的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • 写一个移动端惯性滑动&回弹Vue导航栏组件 ly-tab

    写一个移动端惯性滑动&回弹Vue导航栏组件 ly-tab

    前一段时间小编写一个移动端惯性滑动&回弹Vue导航栏组件 ly-tab,觉的非常实用,大家可能在做项目时会用到,感兴趣的朋友跟随脚本之家小编一起学习吧
    2018-03-03
  • vue项目中应用ueditor自定义上传按钮功能

    vue项目中应用ueditor自定义上传按钮功能

    这篇文章主要介绍了vue项目中应用ueditor自定义上传按钮功能,文中以vue-cli生成的项目为例给大家介绍了vue项目中使用ueditor的方法,感兴趣的朋友跟随脚本之家小编一起学习吧
    2018-04-04
  • vue项目展示pdf文件的方法实现

    vue项目展示pdf文件的方法实现

    本文主要介绍了vue项目展示pdf文件的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • Vue Mixins混入介绍与使用

    Vue Mixins混入介绍与使用

    如果我们在每个组件中去重复定义这些属性和方法会使得项目出现代码冗余并提高了维护难度,针对这种情况官方提供了Mixins特性,这时使用Vue mixins混入有很大好处,下面就介绍下Vue mixins混入使用方法,需要的朋友参考下吧
    2023-02-02
  • element-ui中this.$confirm提示文字中部分有颜色自定义方法

    element-ui中this.$confirm提示文字中部分有颜色自定义方法

    this.$confirm是一个Vue.js中的弹窗组件,其样式可以通过CSS进行自定义,下面这篇文章主要给大家介绍了关于element-ui中this.$confirm提示文字中部分有颜色的自定义方法,需要的朋友可以参考下
    2024-02-02
  • ant-design-vue中的select选择器,对输入值的进行筛选操作

    ant-design-vue中的select选择器,对输入值的进行筛选操作

    这篇文章主要介绍了ant-design-vue中的select选择器,对输入值的进行筛选操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • 基于Vue 2.0 监听文本框内容变化及ref的使用说明介绍

    基于Vue 2.0 监听文本框内容变化及ref的使用说明介绍

    今天小编就为大家分享一篇基于Vue 2.0 监听文本框内容变化及ref的使用说明介绍,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • vue中组件的name属性含义和用法示例

    vue中组件的name属性含义和用法示例

    组件是有name属性的,匹配的就是组件的name,下面这篇文章主要给大家介绍了关于vue中组件的name属性含义和用法的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-12-12

最新评论