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实战之仿淘宝商城左侧导航效果
Apr 12 Javascript
input 输入框获得/失去焦点时隐藏/显示文字(jquery版)
Apr 02 Javascript
javascript自动给文本url地址增加链接的方法分享
Jan 20 Javascript
使用Node.js实现一个简单的FastCGI服务器实例
Jun 09 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖动基本操作
Nov 30 Javascript
jQuery密码强度验证控件使用详解
Jan 05 Javascript
js微信分享实现代码
Oct 11 Javascript
详解vue+css3做交互特效的方法
Nov 20 Javascript
浅谈es6中export和export default的作用及区别
Feb 07 Javascript
webpack4.0 入门实践教程
Oct 08 Javascript
JS使用iView的Dropdown实现一个右键菜单
May 06 Javascript
vue element-ui实现动态面包屑导航
Dec 23 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
smarty的保留变量问题
2008/10/23 PHP
PHP中对用户身份认证实现两种方法
2011/06/04 PHP
PHP实现ftp上传文件示例
2014/08/21 PHP
PHP遍历目录函数opendir()、readdir()、closedir()、rewinddir()总结
2014/11/18 PHP
php下Memcached入门实例解析
2015/01/05 PHP
php中preg_replace正则替换用法分析【一次替换多个值】
2017/01/17 PHP
php 基础函数
2017/02/10 PHP
关于PHP转换超过2038年日期出错的问题解决
2017/06/28 PHP
javascript 放大镜 v1.0 基于Yui2 实现的放大镜效果
2010/03/08 Javascript
Jquery读取URL参数小例子
2013/08/30 Javascript
个人总结的一些JavaScript技巧、实用函数、简洁方法、编程细节
2015/06/10 Javascript
深入理解javascript的getTime()方法
2017/02/16 Javascript
基于axios封装fetch方法及调用实例
2018/02/05 Javascript
jquery 时间戳转日期过程详解
2019/10/12 jQuery
js实现漂亮的星空背景
2019/11/01 Javascript
详解Vue串联过滤器的使用场景
2020/04/30 Javascript
JS删除对象中某一属性案例详解
2020/09/08 Javascript
Vue3+elementui plus创建项目的方法
2020/12/01 Vue.js
可用于监控 mysql Master Slave 状态的python代码
2013/02/10 Python
python中合并两个文本文件并按照姓名首字母排序的例子
2014/04/25 Python
在win和Linux系统中python命令行运行的不同
2016/07/03 Python
python脚本作为Windows服务启动代码详解
2018/02/11 Python
pytorch构建网络模型的4种方法
2018/04/13 Python
Python生成器定义与简单用法实例分析
2018/04/30 Python
使用pip发布Python程序的方法步骤
2018/10/11 Python
python实现扫雷游戏的示例
2020/10/20 Python
New Balance德国官方网站:购买鞋子和服装
2019/08/31 全球购物
一套Delphi的笔试题二
2013/05/11 面试题
绘画设计学生的个人自我评价
2013/09/20 职场文书
历史学专业大学生找工作的自我评价
2013/10/16 职场文书
质检员的岗位职责
2013/11/15 职场文书
工程测量与监理专业应届生求职信
2013/11/27 职场文书
论文指导教师评语
2014/04/28 职场文书
食堂卫生管理制度
2015/08/04 职场文书
Python生成九宫格图片的示例代码
2021/04/14 Python
Windows Server 2016 配置 IIS 的详细步骤
2022/04/28 Servers