Vue项目中数据的深度监听或对象属性的监听实例


Posted in Javascript onJuly 17, 2020

众所周知,vue项目中对数据的监听,提供了一个很好的钩子watch,watch可以极其方便的监听我们常用数据类型值的变化,但通常当我们想监听一个对象中,某个属性值的变化时,很难达到我们预期的效果。根据vue的文档,不难发现,使用数据的深度监听来达到这一效果。具体实现如下:

watch: {
  evlist: {
  handler(val, oldVal) {
   this.isTeam = val.projectParty;
   this.pjtid = val.pjtid;
   this.isFinish = val.projectSelfValue;
  },
  deep: true
  },
 
 },

这其中,evlist是一个对象,val监听到变化后的值,oldVal是变化前的值。

补充知识:vue中的监听属性和计算属性

计算属性(computed)

vue中的计算属性是非常棒的东西,它兼具了逻辑和变量。可以让我们不再关注视图层,值关注代码的逻辑即可。至于数据如何展现则只需由Vue负责,不需要我们的参与。

所以如果在面临选择是使用计算属性还是监视属性的情况下,优先选择计算属性

<p>Original message: "{{ message }}"</p>
  <p>Computed reversed message: "{{ reversedMessage }}"</p>
</div>

export default {
  data(){
   return { 
    message: 'Hello',
   }
  },
  computed: {
   reversedMessage: function () {
    return this.message.split('').reverse().join('');
   }
  }

可以看到我们使用的计算属性替代了模板内表达式的功能。所以,对于任何复杂逻辑,你都应当使用计算属性。而且计算属性让我们只关注于逻辑实现,至于后期的数据在界面上的表示形式则直接由Vue.js负责,读者可以看到我们并没有直接参与页面展示上面来

此外,传统的直接通过表达式求值的方式需要我们自行取值,而计算属性是基于它们的依赖进行缓存的。只在相关依赖发生改变时它们才会重新求值。也就是说,计算属性会直接从缓存拿值,并伴随着值的改变而改变。而传统的直接通过表达式求值的方式需要我们在拿值之前需要执行一次getter()函数

监听属性(watch)

监听属性其实质是一次异步回调,希望读者在想到使用监听属性之前多考虑能否采用计算属性来取代监听属性

对比同一个功能实现

//计算属性
computed: {
  fullName2: function () {
    return this.firstName + ' ' + this.lastName
  }
}
//监听属性
watch: {
   firstName: function (val) {
    this.fullName = val + ' ' + this.lastName
  },
  lastName: function (val) {
    this.fullName = this.firstName + ' ' + val
  }
}

可以看到计算属性的代码更加简洁也更加高效,而且就实现效果而言,明显计算属性会更好一点

以上这篇Vue项目中数据的深度监听或对象属性的监听实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript当中的代码嗅探扩展原生对象和原型(prototype)
Jan 11 Javascript
append和appendTo的区别以及appendChild用法
Dec 24 Javascript
javascript 闭包详解
Feb 15 Javascript
jQuery mobile转换url地址及获取url中目录部分的方法
Dec 04 Javascript
JavaScript知识点整理
Dec 09 Javascript
jQuery动画效果实现图片无缝连续滚动
Jan 12 Javascript
原生JS实现-星级评分系统的简单实例
Aug 21 Javascript
扩展jquery easyui tree的搜索树节点方法(推荐)
Oct 28 Javascript
js 判断登录界面的账号密码是否为空
Feb 08 Javascript
通过实例了解js函数中参数的传递
Jun 15 Javascript
通过javascript实现段落的收缩与展开
Jun 26 Javascript
微信公众号中的JSSDK接入及invalid signature等常见错误问题分析(全面解析)
Apr 11 Javascript
解决vue无法侦听数组及对象属性的变化问题
Jul 17 #Javascript
使用element-ui +Vue 解决 table 里包含表单验证的问题
Jul 17 #Javascript
Vue element-ui父组件控制子组件的表单校验操作
Jul 17 #Javascript
简单了解常用的JavaScript 库
Jul 16 #Javascript
jQuery加PHP实现图片上传并提交的示例代码
Jul 16 #jQuery
浅谈js中的attributes和Attribute的用法与区别
Jul 16 #Javascript
JS自定义右键菜单实现代码解析
Jul 16 #Javascript
You might like
为什么《星际争霸》是测试人工智能的理想战场
2019/12/03 星际争霸
PHP4 与 MySQL 交互使用
2006/10/09 PHP
Javascript 类型转换方法
2010/10/24 Javascript
关于JS控制代码暂停的实现方法分享
2012/10/11 Javascript
关于extjs treepanel复选框选中父节点与子节点的问题
2013/04/02 Javascript
JavaScript instanceof 的使用方法示例介绍
2013/10/23 Javascript
深入分析Javascript事件代理
2016/01/30 Javascript
JavaScript tab选项卡插件实例代码
2016/02/23 Javascript
详述JavaScript实现继承的几种方式(推荐)
2016/03/22 Javascript
JavaScript必知必会(九)function 说起 闭包问题
2016/06/08 Javascript
利用js+css+html实现固定table的列头不动
2016/12/08 Javascript
js实现三级联动效果(简单易懂)
2017/03/27 Javascript
JS实现评价的星星功能
2017/08/20 Javascript
vue中render函数的使用详解
2018/10/12 Javascript
VueJs里利用CryptoJs实现加密及解密的方法示例
2019/04/29 Javascript
使用Python编写一个简单的tic-tac-toe游戏的教程
2015/04/16 Python
100行python代码实现跳一跳辅助程序
2018/01/15 Python
python中virtualenvwrapper安装与使用
2018/05/20 Python
在python中获取div的文本内容并和想定结果进行对比详解
2019/01/02 Python
python文件转为exe文件的方法及用法详解
2019/07/08 Python
Django学习之文件上传与下载
2019/10/06 Python
Python的形参和实参使用方式
2019/12/24 Python
Pycharm中import torch报错的快速解决方法
2020/03/05 Python
详解用selenium来下载小姐姐图片并保存
2021/01/26 Python
Canon佳能美国官方商店:购买数码相机、数码单反相机、镜头和打印机
2016/11/15 全球购物
幼儿园中秋节活动方案
2014/02/06 职场文书
群众路线教育党课主持词
2014/04/01 职场文书
遗嘱公证书标准样本
2014/04/08 职场文书
慰问敬老院活动总结
2014/04/26 职场文书
《周恩来的四个昼夜》观后思想汇报范文两篇
2014/09/10 职场文书
检讨书1000字
2014/10/11 职场文书
先进党组织事迹材料
2014/12/26 职场文书
爱情保证书
2015/01/17 职场文书
小平您好观后感
2015/06/09 职场文书
2015年物业管理员工工作总结
2015/10/15 职场文书
python中Tkinter 窗口之输入框和文本框的实现
2021/04/12 Python