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 相关文章推荐
JS刷新框架外页面七种实现代码
Feb 18 Javascript
javascript使用百度地图api和html5特性获取浏览器位置
Jan 10 Javascript
Bootstrap缩略图与警告框学习使用
Feb 08 Javascript
Easyui Tree获取当前选择节点的所有顶级父节点
Feb 14 Javascript
Angularjs 实现移动端在线测评效果(推荐)
Apr 05 Javascript
基于BootStrap的前端分页带省略号和上下页效果
May 18 Javascript
vue 中filter的多种用法
Apr 26 Javascript
ES10 特性的完整指南小结
Mar 04 Javascript
利用不到200行代码写一款属于你自己的js类库
Jul 08 Javascript
JS实现移动端在线签协议功能
Aug 22 Javascript
Javascript作用域和作用域链原理解析
Mar 03 Javascript
axios封装与传参示例详解
Oct 18 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中static关键字原理的学习研究分析
2011/07/18 PHP
Ajax+Jpgraph实现的动态折线图功能示例
2019/02/11 PHP
Laravel框架Eloquent ORM删除数据操作示例
2019/12/03 PHP
PHP如何解决微信文章图片防盗链
2020/12/09 PHP
prototype 学习笔记整理
2009/07/17 Javascript
extjs 学习笔记 四 带分页的grid
2009/10/20 Javascript
Jquery Autocomplete 结合asp.net使用要点
2010/10/29 Javascript
jquery 操作表格实现代码(多种操作打包)
2011/03/20 Javascript
基于jquery &amp; json的省市区联动代码
2012/06/26 Javascript
JavaScript生成验证码并实现验证功能
2016/09/24 Javascript
详解Angularjs在控制器(controller.js)中使用过滤器($filter)格式化日期/时间实例
2017/02/17 Javascript
完美实现js焦点轮播效果(二)(图片可滚动)
2017/03/07 Javascript
nodejs中express入门和基础知识点学习
2018/09/13 NodeJs
layui: layer.open加载窗体时出现遮罩层的解决方法
2019/09/26 Javascript
微信小程序去除左上角返回键的实现方法
2020/03/06 Javascript
最大K个数问题的Python版解法总结
2016/06/16 Python
利用Python批量生成任意尺寸的图片
2016/08/29 Python
PyQt5每天必学之带有标签的复选框
2018/04/19 Python
PyQt5实现五子棋游戏(人机对弈)
2020/03/24 Python
使用python获取(宜宾市地震信息)地震信息
2019/06/20 Python
python 使用plt画图,去除图片四周的白边方法
2019/07/09 Python
python之生产者消费者模型实现详解
2019/07/27 Python
Flask框架学习笔记之使用Flask实现表单开发详解
2019/08/12 Python
Python字典添加,删除,查询等相关操作方法详解
2020/02/07 Python
基于pycharm实现批量修改变量名
2020/06/02 Python
python使用matplotlib的savefig保存时图片保存不完整的问题
2021/01/08 Python
美国在线购买内衣网站:HerRoom
2020/02/22 全球购物
公证委托书大全
2014/04/04 职场文书
职位说明书范文
2014/05/07 职场文书
教师节横幅标语
2014/10/08 职场文书
房屋转让协议书
2014/10/18 职场文书
生日寿星公答谢词
2015/09/29 职场文书
二手手机买卖合同范本(2019年版)
2019/10/28 职场文书
基于flask实现五子棋小游戏
2021/05/25 Python
React-vscode使用jsx语法的问题及解决方法
2021/06/21 Javascript
HTML5中的DOCUMENT.VISIBILITYSTATE属性详解
2023/05/07 HTML / CSS