Vue.js计算属性computed与watch(5)


Posted in Javascript onDecember 09, 2016

在模板中绑定表达式是非常便利的,但是它们实际上只用于简单的操作。模板是为了描述视图的结构。在模板中放入太多的逻辑会让模板过重且难以维护。这就是为什么 Vue.js 将绑定表达式限制为一个表达式。如果需要多于一个表达式的逻辑,应当使用**计算属性**。

Vue实例的computed的属性

<div class="test">
    <p>原始的信息{{message}}</p>
    <p>计算后的信息{{ComputedMessage}}</p>
  </div>

js代码

var myVue = new Vue({
    el: ".test",
    data: {
      message:12
    },
    computed:{
      ComputedMessage:function () {
        return this.message+10;
      }
    }
  });

界面会显示 12 和 22
上述的方式是一种缓冲的实现的效果,这种实现的方式依赖于它的缓寸,计算得到的属性只有在相关依赖(message)改变的时候才会重新取值,这就意味着只要message没有发生改变的时候,多次访问ComputedMessage都不会再重新执行计算的这个属性。。

计算后的ComputedMessage属性始终是依赖于message的

通过调用函数实现同样的效果

<div class="test">
    <p>原始的信息{{message}}</p>
    <p>计算后的信息{{MessageFunction()}}</p>
  </div>

js代码

var myVue = new Vue({
    el: ".test",
    data: {
      message:12
    },
    methods:{
      MessageFunction:function () {
        return this.message+10;
      }
    }
  });

得到的结果和上面的结果是一样的,但是每次被重新渲染的时候都会被重新调用。
所以使用上述两种方式的时候,首先要确定你是否需要借助缓存

使用vue实例的watch

这个没有看懂呀
但是使用computed这个属性更加的方便和快捷

<div class="test">
    <p>原始的信息{{fullName}}</p>
  </div>

js代码

var myVue = new Vue({
    el: ".test",
    data: {
      firstName:"fur",
      lastName:"bool"
    },
    computed:{
      fullName:function () {
        return this.firstName+this.lastName
      }
    }
  });

而且你可以computed属性设置setter getter是默认就有的。

演示set和get的调用过程

<div class="test">
    <p>原始的信息{{fullName}}</p>
    <button @click="fu">test</button>
  </div>

js代码

var myVue = new Vue({
    el: ".test",
    data: {
      firstName:"fur",
      lastName:"bool",
      fullName:"sasas dsdsd dsds"
    },
    computed:{
      fullName:{
        get:function () {
          console.log("get")
          return this.firstName+this.lastName
        },
        set:function(value){
          var names=value.split(" ");
          this.firstName=names[0];
          this.lastName=names[names.length-1];
          console.log("set");
        }
      }
    },
    methods:{
      fu:function () {
        myVue.fullName="sasas dsdsd dsds";
        console.log(myVue.firstName);   //sasas
        console.log(myVue.lastName);  //dsds
      }
    }
  });

首先会输出get;

在点击按钮为fullName赋值的时候首先调用set 再调用get方法。

自定义的Watcher

虽然计算属性在大多数情况下是非常合适的,但是有的时候也需要自定义一个watcher。这是因为你想要在数据变化响应的时候,执行异步操作胡总和其他的操作是非常有用的。

Javascript 相关文章推荐
jquery ajax学习笔记2 使用XMLHttpRequest对象的responseXML
Oct 16 Javascript
js实现touch移动触屏滑动事件
Apr 17 Javascript
深入理解JavaScript内置函数
Jun 03 Javascript
类似于QQ的右滑删除效果的实现方法
Oct 16 Javascript
JS区分Object与Aarry的六种方法总结
Feb 27 Javascript
利用 spin.js 生成等待效果(js 等待效果)
Jun 25 Javascript
详解React 16 中的异常处理
Jul 28 Javascript
angular指令笔记ng-options的使用方法
Sep 18 Javascript
基于vue-cli配置lib-flexible + rem实现移动端自适应
Dec 26 Javascript
使用use注册Vue全局组件和全局指令的方法
Mar 08 Javascript
Vue.js图片预览插件使用详解
Aug 27 Javascript
sortable+element 实现表格行拖拽的方法示例
Jun 07 Javascript
JS新包管理工具yarn和npm的对比与使用入门
Dec 09 #Javascript
清除浏览器缓存的几种方法总结(必看)
Dec 09 #Javascript
vue.js绑定class和style样式(6)
Dec 09 #Javascript
浅析JavaScript动画模拟拖拽原理
Dec 09 #Javascript
JS定时器实现数值从0到10来回变化
Dec 09 #Javascript
原生js实现查询天气小应用
Dec 09 #Javascript
JS实现太极旋转思路分析
Dec 09 #Javascript
You might like
初步介绍PHP扩展开发经验分享
2012/09/06 PHP
解析smarty模板中类似for的功能实现
2013/06/18 PHP
PHP中Laravel 关联查询返回错误id的解决方法
2017/04/01 PHP
laravel多条件查询方法(and,or嵌套查询)
2019/10/09 PHP
JQuery中根据属性或属性值获得元素(6种情况获取方法)
2013/01/17 Javascript
jQuery+ajax中getJSON() 用法实例
2014/12/22 Javascript
实例解析jQuery插件EasyUI最常用的表单验证规则
2015/11/29 Javascript
百度地图给map添加右键菜单(判断是否为marker)
2016/03/04 Javascript
js模拟百度模糊搜索的实例
2017/08/04 Javascript
javascript  删除select中的所有option的实例
2017/09/17 Javascript
vue实现移动端悬浮窗效果
2018/12/01 Javascript
原生JS实现汇率转换功能代码实例
2020/05/13 Javascript
理解Proxy及使用Proxy实现vue数据双向绑定操作
2020/07/18 Javascript
Vue 实例中使用$refs的注意事项
2021/01/29 Vue.js
python实现的二叉树算法和kmp算法实例
2014/04/25 Python
总结Python编程中函数的使用要点
2016/03/20 Python
Python根据成绩分析系统浅析
2019/02/11 Python
python实现最大子序和(分治+动态规划)
2019/07/05 Python
详解Django将秒转换为xx天xx时xx分
2019/09/27 Python
python做接口测试的必要性
2019/11/20 Python
Pycharm中Python环境配置常见问题解析
2020/01/16 Python
TensorFlow——Checkpoint为模型添加检查点的实例
2020/01/21 Python
Python统计学一数据的概括性度量详解
2020/03/03 Python
sklearn和keras的数据切分与交叉验证的实例详解
2020/06/19 Python
Python自省及反射原理实例详解
2020/07/06 Python
python爬虫智能翻页批量下载文件的实例详解
2021/02/02 Python
Bluebella法国官网:英国性感内衣品牌
2019/05/03 全球购物
类、抽象类、接口的差异
2016/06/13 面试题
文秘专业应届生求职信范文
2013/11/14 职场文书
会计助理的岗位职责
2013/11/29 职场文书
《胖乎乎的小手》教学反思
2014/02/26 职场文书
美容院营销方案
2014/03/05 职场文书
搞笑婚礼主持词
2014/03/13 职场文书
11.9消防日宣传标语
2014/10/08 职场文书
2015年八一建军节演讲稿
2015/03/19 职场文书
2016年劳模先进事迹材料
2016/02/25 职场文书