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 相关文章推荐
tagName的使用,留一笔
Jun 26 Javascript
Jquery Uploadify多文件上传带进度条且传递自己的参数
Aug 28 Javascript
用Javascript获取页面元素的具体位置
Dec 09 Javascript
Javascript 按位与运算符 (&amp;)使用介绍
Feb 04 Javascript
jQuery中阻止冒泡事件的方法介绍
Apr 12 Javascript
js获取网页可见区域、正文以及屏幕分辨率的高度
May 15 Javascript
JavaScript学习心得之概述
Jan 20 Javascript
详解JS中的attribute属性
Apr 25 Javascript
JS获取数组中出现次数最多及第二多元素的方法
Oct 27 Javascript
vue ssr 指南详读
Jun 29 Javascript
详解用async/await来处理异步
Aug 28 Javascript
vue proxy 的优势与使用场景实现
Jun 15 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加密解密的代码
2007/07/16 PHP
Linux编译升级php的详细方法
2013/11/04 PHP
php数组比较实现查找连续数的方法
2015/07/29 PHP
JavaScript中的运算符种类及其规则介绍
2013/09/26 Javascript
JavaScript 语言基础知识点总结(思维导图)
2013/11/10 Javascript
Javascript验证方法大全
2015/09/21 Javascript
jQuery包裹节点用法完整示例
2016/09/13 Javascript
微信小程序使用第三方库Immutable.js实例详解
2016/09/27 Javascript
jQuery插件echarts设置折线图中折线线条颜色和折线点颜色的方法
2017/03/03 Javascript
vue.js开发环境搭建教程
2017/05/04 Javascript
Angular 2父子组件数据传递之@Input和@Output详解 (上)
2017/07/05 Javascript
vue组件(全局,局部,动态加载组件)
2018/09/02 Javascript
小程序实现分类页
2019/07/12 Javascript
Vue Cli3 打包配置并自动忽略console.log语句的方法
2020/04/23 Javascript
[01:29]Ti4循环赛第三日精彩回顾
2014/07/13 DOTA
Python实现新浪博客备份的方法
2016/04/27 Python
Python中str.format()详解
2017/03/12 Python
Python实现的选择排序算法原理与用法实例分析
2017/11/22 Python
Python实现求一个集合所有子集的示例
2018/05/04 Python
python实现简单的文字识别
2018/11/27 Python
python3使用腾讯企业邮箱发送邮件的实例
2019/06/28 Python
Python生成个性签名图片获取GUI过程解析
2019/12/16 Python
Python使用Paramiko控制liunx第三方库
2020/05/20 Python
Python OpenCV中的numpy与图像类型转换操作
2020/12/11 Python
乌克兰最大的家用电器和电子产品连锁店:Eldorado
2019/10/02 全球购物
英国豪华家具和经典家居饰品购物网站:OKA
2020/06/05 全球购物
土木工程师岗位职责
2013/11/24 职场文书
幼儿园大班毕业感言
2014/02/06 职场文书
房屋出租协议书
2014/04/10 职场文书
婚礼答谢词
2015/01/04 职场文书
单位同意报考证明
2015/06/17 职场文书
高一语文教学反思
2016/02/16 职场文书
Mysql 如何实现多张无关联表查询数据并分页
2021/06/05 MySQL
SQL实现LeetCode(197.上升温度)
2021/08/07 MySQL
mysql5.6主从搭建以及不同步问题详解
2021/12/04 MySQL
Python的代理类实现,控制访问和修改属性的权限你都了解吗
2022/03/21 Python