vue计算属性无法监听到数组内部变化的解决方案


Posted in Javascript onNovember 06, 2019

vue的计算属性

计算属性可以帮助我们简化代码,做到实时更新,不用再自己添加function去修改data。

首先看一下计算属性的基本写法(摘自官网)

var vm = new Vue({
 el: '#demo',
 data: {
 firstName: 'Foo',
 lastName: 'Bar'
 },
 computed: {
 fullName: function () {
  return this.firstName + ' ' + this.lastName
 }
 }
})

这样我们在模版里这样引入computed属性就可以了,他的效果个data一样

<div id="demo">{{ fullName }}</div>

这样我们修改firstName或者lastName,fullName都会同步更新

这里我们主要不是讲这个,而是讲如果把 firstName和lastName放在一个数组里

比如这样[firstName ,lastName]

如果这时候修改数组中的一项会不会有相同的效果呢?

修改一下代码

var vm = new Vue({
 el: '#demo',
 data: {
  nameArray:['Foo' ,'Bar']
 },
 computed: {
 fullName: function () {
  return this.nameArray[0] + ' ' + this.nameArray[1]
 }
 }
})
methods: {
 change () {
  this.nameArray[0] = '123'
 }

触发change方法可见fullName并没有变化。原因可能是vue没有监听到数组 nameArray的长度变化。

此时我们可以采用splice让数组的长度有个变化,这时候vue就可以监听到了

this.nameArray.splice(0, 1, '123')

或者使用vue的$set方法

this.$set(this.nameArray, 0, '123')

还有一点要注意,就是如果这个计算属性没有使用过,也就是说页面中没有引用,也没有其他变量使用他,同样不会触发计算属性。至少,来个console打印一下也行

以上这篇vue计算属性无法监听到数组内部变化的解决方案就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Wordpress ThickBox 添加“查看原图”效果代码
Dec 11 Javascript
jquery监控数据是否变化(修正版)
Apr 12 Javascript
用JS判断IE版本的代码 超管用!
Aug 09 Javascript
Webkit的跨域安全问题说明
Sep 13 Javascript
Javascript排序算法之合并排序(归并排序)的2个例子
Apr 04 Javascript
Bootstrap媒体对象的实现
May 01 Javascript
Bootstrap使用基础教程详解
Sep 05 Javascript
浅谈jquery的html方法里包含特殊字符的处理
Nov 30 Javascript
Angular.JS判断复选框checkbox是否选中并实时显示
Nov 30 Javascript
Ext JS 实现建议词模糊动态搜索功能
May 13 Javascript
微信小程序实现留言功能
Oct 31 Javascript
jQuery使用ajax传递json对象到服务端及contentType的用法示例
Mar 12 jQuery
详解vue中使用axios对同一个接口连续请求导致返回数据混乱的问题
Nov 06 #Javascript
vuex state中的数组变化监听实例
Nov 06 #Javascript
element的el-table中记录滚动条位置的示例代码
Nov 06 #Javascript
webpack是如何实现模块化加载的方法
Nov 06 #Javascript
node读写Excel操作实例分析
Nov 06 #Javascript
详解vue页面首次加载缓慢原因及解决方案
Nov 06 #Javascript
electron 安装,调试,打包的具体使用
Nov 06 #Javascript
You might like
php 采集书并合成txt格式的实现代码
2009/03/01 PHP
php读取mysql乱码,用set names XXX解决的原理分享
2011/12/29 PHP
PHP中如何判断AJAX提交的数据
2012/02/05 PHP
使用session判断用户登录用户权限(超简单)
2013/06/08 PHP
php反射类ReflectionClass用法分析
2016/05/12 PHP
在Mac OS下搭建LNMP开发环境的步骤详解
2017/03/10 PHP
20个非常棒的Jquery实用工具 国外文章
2010/01/01 Javascript
extJs 下拉框联动实现代码
2010/04/09 Javascript
javascript字母大小写转换的4个函数详解
2014/05/09 Javascript
JavaScript控制两个列表框listbox左右交换数据的方法
2015/03/18 Javascript
nodejs中实现sleep功能实例
2015/03/24 NodeJs
实例讲解JavaScript的Backbone.js框架中的View视图
2016/05/05 Javascript
【经典源码收藏】基于jQuery的项目常见函数封装集合
2016/06/07 Javascript
AngularJS动态加载模块和依赖的方法分析
2016/11/08 Javascript
原生js实现焦点轮播图效果
2017/01/12 Javascript
angular.js指令中transclude选项及ng-transclude指令详解
2017/05/24 Javascript
vue中element-ui表格缩略图悬浮放大功能的实例代码
2018/06/26 Javascript
JS实现全屏预览F11功能的示例代码
2018/07/23 Javascript
jQuery扩展方法实现Form表单与Json互相转换的实例代码
2018/09/05 jQuery
[02:20]DOTA2中文配音宣传片
2013/05/22 DOTA
Python tkinter模块弹出窗口及传值回到主窗口操作详解
2017/07/28 Python
Python编程求质数实例代码
2018/01/31 Python
python web基础之加载静态文件实例
2018/03/20 Python
python Tkinter的图片刷新实例
2019/06/14 Python
python 标准差计算的实现(std)
2019/07/29 Python
Python中注释(多行注释和单行注释)的用法实例
2019/08/28 Python
python 实现快速生成连续、随机字母列表
2019/11/28 Python
python通过安装itchat包实现微信自动回复收到的春节祝福
2020/01/19 Python
Python基于pyecharts实现关联图绘制
2020/03/27 Python
python将unicode和str互相转化的实现
2020/05/11 Python
英国领先的野生鸟类食品供应商:GardenBird
2018/08/09 全球购物
班组长岗位职责
2014/03/03 职场文书
关工委先进个人事迹材料
2014/05/23 职场文书
人民调解协议书范本
2014/10/11 职场文书
排查并解决MySQL生产库内存使用率高的报警
2022/04/11 MySQL
html中相对位置与绝对位置的具体使用
2022/05/15 HTML / CSS