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 相关文章推荐
Jquery实战_读书笔记1—选择jQuery
Jan 22 Javascript
JQuery 选择器 xpath 语法应用
May 13 Javascript
在JQuery dialog里的服务器控件 事件失效问题
Dec 08 Javascript
jquery.ui.draggable中文文档(原文翻译)
Nov 15 Javascript
谈谈AngularJs中的隐藏和显示
Dec 09 Javascript
使用vue.js2.0 + ElementUI开发后台管理系统详细教程(一)
Jan 21 Javascript
vue params、query传参使用详解
Sep 12 Javascript
ajax请求+vue.js渲染+页面加载的示例
Feb 11 Javascript
微信{"errcode":48001,"errmsg":"api unauthorized, hints: [ req_id: 1QoCla0699ns81 ]"}
Oct 12 Javascript
vscode下的vue文件格式化问题
Nov 28 Javascript
三分钟教你用Node做一个微信哄女友(基友)神器(面向小白)
Jun 21 Javascript
vue中使用v-for时为什么不能用index作为key
Apr 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
非洲第一个咖啡超凡杯大赛承办国—卢旺达的咖啡怎么样
2021/03/03 咖啡文化
php实现mysql数据库操作类分享
2014/02/14 PHP
PHP封装CURL扩展类实例
2015/07/28 PHP
PHP时间处理类操作示例
2018/09/05 PHP
使用jquery动态加载javascript以减少服务器压力
2012/10/29 Javascript
Javascript 判断是否存在函数的方法
2013/01/03 Javascript
window.navigate 与 window.location.href 的使用区别介绍
2013/09/21 Javascript
JS中getYear()和getFullYear()区别分析
2014/07/04 Javascript
【经验总结】编写JavaScript代码时应遵循的14条规律
2016/06/20 Javascript
Bootstrap轮播插件简单使用方法介绍
2016/06/21 Javascript
JavaScript编码风格指南(中文版)
2016/08/26 Javascript
js选项卡的制作方法
2017/01/23 Javascript
vue.js开发环境安装教程
2017/03/17 Javascript
浅谈Vue.js路由管理器 Vue Router
2018/08/16 Javascript
js判断非127开头的IP地址的实例代码
2020/01/05 Javascript
JavaScript前端开发时数值运算的小技巧
2020/07/28 Javascript
vue实现放大镜效果
2020/09/17 Javascript
element el-table表格的二次封装实现(附表格高度自适应)
2021/01/19 Javascript
django rest framework之请求与响应(详解)
2017/11/06 Python
Python实现的插入排序算法原理与用法实例分析
2017/11/22 Python
Python面向对象编程之继承与多态详解
2018/01/16 Python
pycharm new project变成灰色的解决方法
2019/06/27 Python
Python进程间通信 multiProcessing Queue队列实现详解
2019/09/23 Python
python 实现数据库中数据添加、查询与更新的示例代码
2020/12/07 Python
Python 调用C++封装的进一步探索交流
2021/03/04 Python
英国最专业的健身器材供应商之一:Best Gym Equipment
2017/12/22 全球购物
银行门卫岗位职责
2013/12/29 职场文书
开工仪式主持词
2014/03/20 职场文书
班长竞选演讲稿
2014/04/24 职场文书
社区矫正工作方案
2014/06/04 职场文书
教师业务学习材料
2014/12/16 职场文书
个人事迹材料怎么写
2014/12/30 职场文书
幼儿园欢迎词范文
2015/01/26 职场文书
教师工作表现自我评价
2015/03/05 职场文书
详解Python自动化之文件自动化处理
2021/06/21 Python
vue使用wavesurfer.js解决音频可视化播放问题
2022/04/04 Vue.js