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调用XML制作连动下拉列表框
Jun 25 Javascript
基于mootools 1.3框架下的图片滑动效果代码
Apr 22 Javascript
javascript中拼接HTML字符串的最快、最好的方法
Jun 07 Javascript
使用javascript提交form表单方法汇总
Jun 25 Javascript
javascript实现下拉提示选择框
Dec 29 Javascript
JavaScript中的冒泡排序法
Aug 03 Javascript
jQuery操作cookie
Aug 08 Javascript
jQuery完成表单验证的实例代码(纯代码)
Sep 30 jQuery
jQuery除指定区域外点击任何地方隐藏DIV功能
Nov 13 jQuery
Vue组件中slot的用法
Jan 30 Javascript
2020淘宝618理想生活列车自动领喵币js脚本的代码
Jun 02 Javascript
vue-router之解决addRoutes使用遇到的坑
Jul 19 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高手?学会“懒惰”的编程
2006/12/05 PHP
php print EOF实现方法
2009/05/21 PHP
php计算到指定日期还有多少天的方法
2015/04/14 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
2016/05/19 PHP
filemanage功能中用到的lib.js
2007/04/08 Javascript
prototype Element学习笔记(Element篇三)
2008/10/26 Javascript
jquery中获取元素的几种方式小结
2011/07/05 Javascript
javascript常用代码段搜集
2014/12/04 Javascript
jQuery源码分析之jQuery.fn.each与jQuery.each用法
2015/01/23 Javascript
JQuery boxy插件在IE中边角图片不显示问题的解决
2015/05/20 Javascript
jQuery实现给页面换肤的方法
2015/05/30 Javascript
jQuery mobile类库使用时加载导航历史的方法简介
2015/12/04 Javascript
浅谈JS原生Ajax,GET和POST
2016/06/08 Javascript
深入理解javascript函数参数与闭包
2016/12/12 Javascript
js实现开启密码大写提示
2016/12/21 Javascript
微信小程序 使用canvas制作K线实例详解
2017/01/12 Javascript
JavaScript设计模式之观察者模式(发布订阅模式)原理与实现方法示例
2018/07/27 Javascript
使用vue-router为每个路由配置各自的title
2018/07/30 Javascript
jQuery实现提交表单时不提交隐藏div中input的方法
2019/10/08 jQuery
Vue——解决报错 Computed property &quot;****&quot; was assigned to but it has no setter.
2020/12/19 Vue.js
Vue实现简单计算器
2021/01/20 Vue.js
浅谈python对象数据的读写权限
2016/09/12 Python
python字符串和常用数据结构知识总结
2019/05/21 Python
解决python 上传图片限制格式问题
2019/10/30 Python
基于Python实现人脸自动戴口罩系统
2020/02/06 Python
python实现计算器简易版
2020/12/17 Python
python drf各类组件的用法和作用
2021/01/12 Python
中国排名第一的外贸销售网站:LightInTheBox.com(兰亭集势)
2016/10/28 全球购物
意大利体育用品和运动服网上商店:Maxi Sport
2019/09/14 全球购物
阿迪达斯越南官网:adidas越南
2020/07/19 全球购物
物业招聘计划书
2014/01/10 职场文书
杜甫草堂导游词
2015/02/03 职场文书
故意杀人罪辩护词
2015/05/21 职场文书
会计主管竞聘书
2015/09/15 职场文书
pytest进阶教程之fixture函数详解
2021/03/29 Python
MySQL的prepare使用以及遇到的bug
2022/05/11 MySQL