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对checkbox进行全选和反选
May 13 Javascript
JavaScript作用域链示例分享
May 27 Javascript
使用js Math.random()函数生成n到m间的随机数字
Oct 09 Javascript
JavaScript中length属性的使用方法
Jun 05 Javascript
jquery判断至少有一个checkbox被选中的方法
Jun 05 Javascript
JS组件Bootstrap导航条使用方法详解
Apr 29 Javascript
表单元素值获取方式js及java方式的简单实例
Oct 15 Javascript
12条写出高质量JS代码的方法
Jan 07 Javascript
Vue Router的懒加载路径的解决方法
Jun 21 Javascript
JavaScript fetch接口案例解析
Aug 30 Javascript
教你如何编写Vue.js的单元测试的方法
Oct 17 Javascript
解决vuecli3中img src 的引入问题
Aug 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 date()日期时间函数详解
2010/05/16 PHP
腾讯QQ php程序员面试题目整理
2010/06/08 PHP
PHP Global变量定义当前页面的全局变量实现探讨
2013/06/05 PHP
php结合js实现点击超链接执行删除确认操作
2014/10/31 PHP
php使用iconv中文截断问题的解决方法
2015/02/11 PHP
PHP数据库连接mysql与mysqli对比分析
2016/01/04 PHP
php array_keys 返回数组的键名
2016/10/25 PHP
javascript同步Import,同步调用外部js的方法
2008/07/08 Javascript
JQuery最佳实践之精妙的自定义事件
2010/08/11 Javascript
javascript-简单的计算器实现步骤分解(附图)
2013/05/30 Javascript
jquery 延迟执行实例介绍
2013/08/20 Javascript
javascript 面向对象封装与继承
2014/11/27 Javascript
JS+CSS实现下拉列表框美化效果(3款)
2015/08/15 Javascript
AngularJs中Bootstrap3 datetimepicker使用实例
2016/12/13 Javascript
nodejs个人博客开发第五步 分配数据
2017/04/12 NodeJs
Vue路由切换时的左滑和右滑效果示例
2018/05/29 Javascript
详解Vuex下Store的模块化拆分实践
2019/07/31 Javascript
详解JS函数防抖
2020/06/05 Javascript
[00:31]2016完美“圣”典风云人物:国士无双宣传片
2016/12/04 DOTA
[01:07:19]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第一场 1月19日
2021/03/11 DOTA
python回溯法实现数组全排列输出实例分析
2015/03/17 Python
python使用smtplib模块通过gmail实现邮件发送的方法
2015/05/08 Python
python cx_Oracle模块的安装和使用详细介绍
2017/02/13 Python
Python2实现的图片文本识别功能详解
2018/07/11 Python
Python中常用的内置方法
2019/01/28 Python
pyinstaller打包opencv和numpy程序运行错误解决
2019/08/16 Python
tensorflow查看ckpt各节点名称实例
2020/01/21 Python
基于Python中random.sample()的替代方案
2020/05/23 Python
世界最大的私人旅行指南出版商:孤独星球
2016/08/23 全球购物
是否可以从一个static方法内部发出对非static方法的调用?
2014/08/18 面试题
中专毕业生自荐信
2013/11/16 职场文书
九年级数学教学反思
2014/02/02 职场文书
法人代表委托书
2014/04/04 职场文书
物业管理委托协议(2篇)
2014/09/23 职场文书
Nginx URL重写rewrite机制原理及使用实例
2021/04/01 Servers
Spring Cloud Netflix 套件中的负载均衡组件 Ribbon
2022/04/13 Java/Android