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 相关文章推荐
javascript中的array数组使用技巧
Jan 31 Javascript
js 完美图片新闻轮转效果,腾讯大粤网首页图片轮转改造而来
Nov 21 Javascript
javascript改变position值实现菜单滚动至顶部后固定
Jan 18 Javascript
jQuery输入城市查看地图使用介绍
May 08 Javascript
Javascript图片上传前的本地预览实例
Jun 16 Javascript
iScroll.js 使用方法参考
May 16 Javascript
学习使用bootstrap的modal和carousel
Dec 09 Javascript
JS+canvas画布实现炫酷的旋转星空效果示例
Feb 13 Javascript
详解使用Nuxt.js快速搭建服务端渲染(SSR)应用
Mar 13 Javascript
kafka调试中遇到Connection to node -1 could not be established. Broker may not be available.
Sep 17 Javascript
JavaScript实现飞舞的泡泡效果
Feb 07 Javascript
解决vue字符串换行问题(绝对管用)
Aug 06 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 文件上传模型,支持多文件上传
2009/08/13 PHP
php数组函数序列之array_slice() - 在数组中根据条件取出一段值,并返回
2011/11/07 PHP
php截取字符串函数分享
2015/02/02 PHP
Zend Framework教程之Zend_Db_Table表关联实例详解
2016/03/23 PHP
php实现图片按比例截取的方法
2017/02/06 PHP
PHP基于自增数据如何生成不重复的随机数示例
2017/05/19 PHP
javascript基础知识大集锦(一) 推荐收藏
2011/01/13 Javascript
jquery获取复选框checkbox的值的简单实现方法
2016/05/26 Javascript
基于chosen插件实现人员选择树搜索自动筛选功能
2016/09/24 Javascript
vuejs使用$emit和$on进行组件之间的传值的示例
2017/10/04 Javascript
jQuery实现输入框的放大和缩小功能示例
2018/07/21 jQuery
JavaScript中this关键字用法实例分析
2018/08/24 Javascript
微信小程序用户位置权限的获取方法(拒绝后提醒)
2018/11/15 Javascript
开源一个微信小程序仪表盘组件过程解析
2019/07/30 Javascript
js实现上传图片并显示图片名称
2019/12/18 Javascript
VSCode搭建Vue项目的方法
2020/04/30 Javascript
Openlayers绘制聚合标注
2020/09/28 Javascript
Vue SPA 首屏优化方案
2021/02/26 Vue.js
[02:36]DOTA2亚洲邀请赛小组赛精彩集锦:EE凭借法力虚空拿下4杀
2017/03/30 DOTA
python中的set实现不重复的排序原理
2018/01/24 Python
Python多进程multiprocessing.Pool类详解
2018/04/27 Python
对python中array.sum(axis=?)的用法介绍
2018/06/28 Python
TensorFlow绘制loss/accuracy曲线的实例
2020/01/21 Python
python爬取网易云音乐热歌榜实例代码
2020/08/07 Python
快速创建python 虚拟环境
2020/11/28 Python
使用CSS3实现SVG路径描边动画效果入门教程
2019/10/21 HTML / CSS
艺龙旅行网酒店预订:国内、港澳台酒店
2018/06/26 全球购物
给实习单位的感谢信
2014/02/01 职场文书
家长评语和期望
2014/02/10 职场文书
对公司合理化的建议书
2014/03/12 职场文书
机械专业求职信
2014/05/25 职场文书
大型演出策划方案
2014/05/28 职场文书
2014年“向国旗敬礼”网上签名寄语活动方案
2014/09/27 职场文书
2014年幼儿园教师工作总结
2014/11/08 职场文书
人事聘任通知
2015/04/21 职场文书
2015年新教师个人工作总结
2015/10/14 职场文书