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 Dialog 实践分享
Oct 22 Javascript
ajax异步刷新实现更新数据库
Dec 03 Javascript
JS、DOM和JQuery之间的关系示例分析
Apr 09 Javascript
html的DOM中document对象anchors集合用法实例
Jan 21 Javascript
jQuery实现渐变下拉菜单的简单方法
Mar 11 Javascript
jquery 表单验证之通过 class验证表单不为空
Nov 02 Javascript
基于JavaScript代码实现自动生成表格
Jun 15 Javascript
JS简单获得节点元素的方法示例
Feb 10 Javascript
浅谈JavaScript 代码简洁之道
Jan 09 Javascript
node app 打包工具pkg的具体使用
Jan 17 Javascript
Vue实战教程之仿肯德基宅急送App
Jul 19 Javascript
微信小程序开发搜索功能实现(前端+后端+数据库)
Mar 04 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 进度条实现代码
2009/03/10 PHP
PHP原理之异常机制深入分析
2010/08/08 PHP
apache mysql php 源码编译使用方法
2012/05/03 PHP
PHP快速按行读取CSV大文件的封装类分享(也适用于其它超大文本文件)
2014/04/10 PHP
PHP获取文件夹大小函数用法实例
2015/07/01 PHP
为你总结一些php信息函数
2015/10/21 PHP
用htc组件制作windows选项卡
2007/01/13 Javascript
一些mootools的学习资源
2010/02/07 Javascript
JavaScript初学者应注意的七个细节小结
2012/01/30 Javascript
js返回上一页并刷新代码整理
2012/12/21 Javascript
Jquery 跨域访问 Lightswitch OData Service的方法
2013/09/11 Javascript
网站基于flash实现的Banner图切换效果代码
2014/10/14 Javascript
javascript实现window.print()去除页眉页脚
2014/12/30 Javascript
jQuery实现腾讯信用界面(自制刻度尺)样式
2017/08/15 jQuery
Vue.js 实现微信公众号菜单编辑器功能(二)
2018/05/08 Javascript
使用vue-infinite-scroll实现无限滚动效果
2018/06/22 Javascript
关于JavaScript中高阶函数的魅力详解
2018/09/07 Javascript
jQuery中each遍历的三种方法实例分析
2018/09/07 jQuery
解决微信小程序云开发中获取数据库的内容为空的方法
2019/05/15 Javascript
Vue 自定义标签的src属性不能使用相对路径的解决
2019/09/17 Javascript
jQuery Raty星级评分插件使用方法实例分析
2019/11/25 jQuery
Python的subprocess模块总结
2014/11/07 Python
Python中的下划线详解
2015/06/24 Python
浅谈Python单向链表的实现
2015/12/24 Python
利用python在excel里面直接使用sql函数的方法
2019/02/08 Python
python字符串判断密码强弱
2020/03/18 Python
Python读取excel文件中带公式的值的实现
2020/04/17 Python
python两个list[]相加的实现方法
2020/09/23 Python
使用python画出逻辑斯蒂映射(logistic map)中的分叉图案例
2020/12/11 Python
Python中对象的比较操作==和is区别详析
2021/02/12 Python
英国领先的酒类网上商城:TheDrinkShop
2017/03/16 全球购物
大专计算机个人求职的自我评价
2013/10/21 职场文书
4S店销售内勤岗位职责
2015/04/13 职场文书
观后感格式
2015/06/19 职场文书
在 Python 中利用 Pool 进行多线程
2022/04/24 Python
MySQL8.0 Undo Tablespace管理详解
2022/06/16 MySQL