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 相关文章推荐
javascript同步Import,同步调用外部js的方法
Jul 08 Javascript
ext 代码生成器
Aug 07 Javascript
简洁短小的 JavaScript IE 浏览器判定代码
Mar 21 Javascript
firefox下jQuery UI Autocomplete 1.8.*中文输入修正方法
Sep 19 Javascript
setTimeout学习小结
Feb 08 Javascript
Bootstrap模态框使用详解
Feb 15 Javascript
Bootstrap缩略图的创建方法
Mar 22 Javascript
JavaScript队列函数和异步执行详解
Jun 19 Javascript
javascript实现QQ空间相册展示源码
Dec 12 Javascript
解决Mac下安装nmp的淘宝镜像失败问题
May 16 Javascript
vue实现动态显示与隐藏底部导航的方法分析
Feb 11 Javascript
JavaScript实现选项卡效果的分析及步骤
Apr 16 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
PHP遍历并打印指定目录下所有文件实例
2014/02/10 PHP
ThinkPHP实现一键清除缓存方法
2014/06/26 PHP
php实现和c#一致的DES加密解密实例
2017/07/24 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
js中访问html中iframe的文档对象的代码[IE6,IE7,IE8,FF]
2011/01/08 Javascript
js函数中onmousedown和onclick的区别和联系探讨
2013/05/19 Javascript
js实现从中间开始往上下展开网页窗口的方法
2015/03/02 Javascript
JQuery使用index方法获取Jquery对象数组下标的方法
2015/05/18 Javascript
JS数组交集、并集、差集的示例代码
2017/08/23 Javascript
three.js实现3D视野缩放效果
2017/11/16 Javascript
javascript匿名函数中的'return function()'作用
2018/10/15 Javascript
Vue事件修饰符native、self示例详解
2019/07/09 Javascript
layer弹出层自适应高度,垂直水平居中的实现
2019/09/16 Javascript
[03:09]显微镜下的DOTA2第一期——带你走进华丽的DOTA2世界
2014/06/20 DOTA
python中引用与复制用法实例分析
2015/06/04 Python
Python图算法实例分析
2016/08/13 Python
python 限制函数调用次数的实例讲解
2018/04/21 Python
python批量下载网站马拉松照片的完整步骤
2018/12/05 Python
对Python的多进程锁的使用方法详解
2019/02/18 Python
Pytorch卷积层手动初始化权值的实例
2019/08/17 Python
Python closure闭包解释及其注意点详解
2019/08/28 Python
对Django的restful用法详解(自带的增删改查)
2019/08/28 Python
Python3.8对可迭代解包的改进及用法详解
2019/10/15 Python
django中的数据库迁移的实现
2020/03/16 Python
python上传时包含boundary时的解决方法
2020/04/08 Python
pycharm激活码免费分享适用最新pycharm2020.2.3永久激活
2020/11/25 Python
聊聊Python pandas 中loc函数的使用,及跟iloc的区别说明
2021/03/03 Python
中国医药集团国药在线:国药网
2017/02/06 全球购物
求职信标题怎么写
2014/05/26 职场文书
个人贷款授权委托书样本
2014/10/07 职场文书
财务务虚会发言材料
2014/10/20 职场文书
现场施工员岗位职责
2015/04/11 职场文书
四十年同学聚会致辞
2015/07/28 职场文书
学困生帮扶工作总结
2015/08/13 职场文书
Python代码,能玩30多款童年游戏!这些有几个是你玩过的
2021/04/27 Python
javascript进阶篇深拷贝实现的四种方式
2022/07/07 Javascript