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 相关文章推荐
JQuery中使用on方法绑定hover事件实例
Dec 09 Javascript
使用javascript实现简单的选项卡切换
Jan 09 Javascript
易操作的jQuery表单提示插件
Dec 01 Javascript
简单了解Backbone.js的Model模型以及View视图的源码
Feb 14 Javascript
AngularJS控制器继承自另一控制器
May 09 Javascript
jquery mobile移动端幻灯片滑动切换效果
Apr 15 Javascript
基于JavaScript实现下拉列表左右移动代码
Feb 07 Javascript
jQuery序列化后的表单值转换成Json
Jun 16 jQuery
pm2发布node配置文件ecosystem.json详解
May 15 Javascript
layui 上传文件_批量导入数据UI的方法
Sep 23 Javascript
.netcore+vue 实现压缩文件下载功能
Sep 24 Javascript
详解Js模块化的作用原理和方案
Apr 29 Javascript
详解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
截获网站title标签之家内容的例子
2006/10/09 PHP
php中使用接口实现工厂设计模式的代码
2012/06/17 PHP
PHP中的浅复制与深复制的实例详解
2017/10/26 PHP
thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json完整实例
2020/03/02 PHP
Javascript学习笔记2 函数
2010/01/11 Javascript
纯JS实现的批量图片预览加载功能
2011/08/14 Javascript
JavaScript高级程序设计 事件学习笔记
2011/09/10 Javascript
XMLHttpRequest处理xml格式的返回数据(示例代码)
2013/11/21 Javascript
nodejs获取本机内网和外网ip地址的实现代码
2014/06/01 NodeJs
javascript模拟php函数in_array
2015/04/27 Javascript
jQuey将序列化对象在前台显示地实现代码(方法总结)
2016/12/13 Javascript
vue动态生成dom并且自动绑定事件
2017/04/19 Javascript
VUE 更好的 ajax 上传处理 axios.js实现代码
2017/05/10 Javascript
[03:27]最受玩家喜爱奖提名:PZH_Element 致玩家寄语
2016/12/20 DOTA
Python的Django框架中从url中捕捉文本的方法
2015/07/20 Python
DRF跨域后端解决之django-cors-headers的使用
2019/01/27 Python
Ubuntu下Anaconda和Pycharm配置方法详解
2019/06/14 Python
python 如何去除字符串头尾的多余符号
2019/11/19 Python
详解Python实现进度条的4种方式
2020/01/15 Python
M1芯片安装python3.9.1的实现
2021/02/02 Python
详解python3 GUI刷屏器(附源码)
2021/02/18 Python
HTML5中5个简单实用的API
2014/04/28 HTML / CSS
美国内衣第一品牌:Hanes(恒适)
2016/07/29 全球购物
Expedia泰国:预订机票、酒店和旅游包(航班+酒店)
2016/09/27 全球购物
弘扬雷锋精神活动演讲稿
2014/03/04 职场文书
超市活动计划书
2014/04/24 职场文书
卫生系统先进事迹
2014/05/13 职场文书
公司应聘自荐书
2014/06/14 职场文书
委托书范本
2014/09/13 职场文书
2014大学班主任工作总结
2014/11/08 职场文书
求职导师推荐信范文
2015/03/27 职场文书
买卖合同纠纷代理词
2015/05/25 职场文书
力克胡哲观后感
2015/06/10 职场文书
红色革命电影观后感
2015/06/18 职场文书
从事会计工作年限证明
2015/06/23 职场文书
护理自荐信
2019/05/14 职场文书