vue 对象添加或删除成员时无法实时更新的解决方法


Posted in Javascript onMay 01, 2019

前阵子将项目搬上Vue的时候偶遇一个突发问题

当对象添加或删除成员时页面无法实时更新渲染,但是数组是正常的

目测是ob没有监听到对象的成员有变化

查看一些大家的求助回答是说ob监听的是数组length的变动 对象默认没有length 新增成员时不会自增length

所以监听不到对象的变化 最近大脑过于疲惫 懒得看文档了。。。

不多废话 解决方式直接上代码

在实例内部可以用$set和$delete

this.$set(this.age,'age',18);
this.$delete(this.age,'age');

也可以直接调用Vue的set和delete

let vm = new Vue({
  el : '#app',
  data : {
    age:{}
  }
});
Vue.set(vm.age,'age',18);
Vue.delete(vm.age,'age');

PS:vue给数组和对象进行增加删除字段不更新数据的解决方法 — Vue.set(object, key, value)

组件基本代码:

<style lang="sass">

</style>
<template>
<div>
  <div>
    <div>

    </div>
  </div>
</div>
</template>
<script>
  export default {
    data(){
      return {

      }
    },
    methods: {
      ceshi(){

      }
    }
  }
</script>

1.数组的增加,删除(数组的push等方法排除)

</style>
<template>
<div>
  <div>
    <div>
      <div v-for="item in items">
        <span>{{ item }}</span>
      </div>
      <button @click="ceshi">anniu</button>
    </div>
  </div>
</div>
</template>

<script>
  export default {
    data(){
      return {
        items: [11,22],
        obj: { a: 'aa', b: 'bb' }
      }
    },
    methods: {
      ceshi(){
        this.items[2] = 33; // 这样的写法数据是无法重新渲染的
      }
    }
  }
</script>

点击按钮操作ceshi事件前后,没发生变化

vue 对象添加或删除成员时无法实时更新的解决方法

解决方法:

就是利用数据的push方法是可以实现的

利用Vue.set方法

具体实现如下:

methods: {
  ceshi(){
    this.$set(this.items, 2, 33)
  }
},

同理,如果items: [{a: ‘11'}] ?> items: [{a: ‘11', b: ‘22'}]

<div v-for="item in items">
 <span v-for="(i, j) in item">{{ i }}--{{ j }}</span>
</div>

this.items[0] = Object.assign({}, this.items[0], { b: '22' });
this.$set(this.items, 0, this.items[0]);

2.给对象增加新属性(同理)

<template>
  <div>
    <div v-for="item in obj">
     <span>{{ item }}</span>
    </div>
  </div>
</template>

data(){
  return {
    obj: { a: 'aa', b: 'bb' }
  }
}

methods: {
  ceshi(){
    this.obj['c'] = '000'; // 不起作用
    this.$set(this.obj, 'c', '000'); //起作用 
  }
},

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Visual Studio中的jQuery智能提示设置方法
Mar 27 Javascript
JavaScript prototype属性使用说明
May 13 Javascript
jQuery列表拖动排列具体实现
Nov 04 Javascript
js组件SlotMachine实现图片切换效果制作抽奖系统
Apr 17 Javascript
使用vue.js制作分页组件
Jun 27 Javascript
javascript工厂模式和构造函数模式创建对象方法解析
Dec 30 Javascript
使用微信内嵌H5网页解决JS倒计时失效问题
Jan 13 Javascript
微信小程序中添加客服按钮contact-button功能
Apr 27 Javascript
AngularJS实现的自定义过滤器简单示例
Feb 02 Javascript
小程序关于请求同步的总结
May 05 Javascript
Nuxt v-bind绑定img src不显示的解决
Dec 05 Javascript
vue点击按钮实现简单页面的切换
Sep 08 Javascript
JavaScript强制类型转换和隐式类型转换操作示例
May 01 #Javascript
Vue源码之关于vm.$delete()/Vue.use()内部原理详解
May 01 #Javascript
Vue.extend实现挂载到实例上的方法
May 01 #Javascript
JS html事件冒泡和事件捕获操作示例
May 01 #Javascript
JS实现的贪吃蛇游戏案例详解
May 01 #Javascript
javascript原型链学习记录之继承实现方式分析
May 01 #Javascript
微信小程序实现卡片左右滑动效果的示例代码
May 01 #Javascript
You might like
PHP下用rmdir实现删除目录的三种方法小结
2008/04/20 PHP
PHP表单验证的3个函数ISSET()、empty()、is_numeric()的使用方法
2011/08/22 PHP
PHP随机生成随机个数的字母组合示例
2014/01/14 PHP
Windows7下的php环境配置教程
2015/02/28 PHP
PHP结合jQuery插件ajaxFileUpload实现异步上传文件实例
2020/08/17 PHP
jQuery对象[0]是什么含义?
2010/07/31 Javascript
jQuery中replaceWith()方法用法实例
2014/12/25 Javascript
js实现的捐赠管理完整实例
2015/01/20 Javascript
javascript判断网页是关闭还是刷新
2015/09/12 Javascript
jQuery实现气球弹出框式的侧边导航菜单效果
2015/09/22 Javascript
常用的Javascript设计模式小结
2015/12/09 Javascript
jquery实现鼠标悬浮停止轮播特效
2020/08/20 Javascript
基于JavaScript实现瀑布流效果(循环渐近)
2016/01/27 Javascript
使用gulp搭建本地服务器并实现模拟ajax
2017/04/05 Javascript
Bootstrap Tooltip显示换行和左对齐的解决方案
2017/10/11 Javascript
vue如何解决循环引用组件报错的问题
2018/09/22 Javascript
原生JS实现手动轮播图效果实例代码
2018/11/22 Javascript
微信小程序文字显示换行问题
2019/07/28 Javascript
利用PHP实现递归删除链表元素的方法示例
2020/10/23 Javascript
Python urlopen()函数 示例分享
2014/06/12 Python
Python中用max()方法求最大值的介绍
2015/05/15 Python
python中文乱码不着急,先看懂字节和字符
2017/12/20 Python
pandas数据分组和聚合操作方法
2018/04/11 Python
Python运维自动化之nginx配置文件对比操作示例
2018/08/29 Python
Python的高阶函数用法实例分析
2019/04/11 Python
Python namedtuple命名元组实现过程解析
2020/01/08 Python
Python代码需要缩进吗
2020/07/01 Python
Python Pillow(PIL)库的用法详解
2020/09/19 Python
HTML5 直播疯狂点赞动画实现代码 附源码
2020/04/14 HTML / CSS
高一新生军训感言
2014/03/02 职场文书
投标人廉洁自律承诺书
2014/05/26 职场文书
党员演讲稿
2014/09/04 职场文书
个人四风问题对照检查材料思想汇报
2014/10/06 职场文书
2014年保洁工作总结
2014/11/24 职场文书
大连导游词
2015/02/12 职场文书
婚育证明格式
2015/06/17 职场文书