vue.js计算属性computed用法实例分析


Posted in Javascript onJuly 06, 2018

本文实例讲述了vue.js计算属性computed用法。分享给大家供大家参考,具体如下:

需求:数据msg值为12345,我们现在需要反向显示成54321。

在模板中绑定表达式是非常便利的,但是它们实际上只用于简单的操作。在模板中放入太多的逻辑会让模板过重且难以维护。例如:

<!DOCTYPE html>
<html>
<head>
  <title></title>
  <meta charset="utf-8">
  <script src="https://cdn.bootcss.com/vue/2.5.16/vue.min.js"></script>
</head>
<body> 
  <div id="box">
    {{msg}}
    <hr>
    {{ msg.split('').reverse().join('') }}
  </div>
  <script type="text/javascript">
    var vm = new Vue({
      el:'#box',
      data:{
        msg:'12345'
      }
    });
    console.log(vm.reMsg); 
  </script>
</body>
</html>

使用本站HTML/CSS/JS在线运行测试工具:http://tools.3water.com/code/HtmlJsRun,可得到如下测试运行效果:

vue.js计算属性computed用法实例分析

Vue提供computed的方式。例如:

<!DOCTYPE html>
<html>
<head>
  <title></title>
  <meta charset="utf-8">
  <script src="https://cdn.bootcss.com/vue/2.5.16/vue.min.js"></script>
</head>
<body> 
  <div id="box">
    {{msg}}
    <hr>
    {{reMsg}}
  </div>
  <script type="text/javascript">
    var vm = new Vue({
      el:'#box',
      data:{
        msg:'12345'
      },
      computed:{
        reMsg:function(){
          return this.msg.split('').reverse().join('')
        }
      }
    });
    console.log(vm.reMsg); 
  </script>
</body>
</html>

同样的可以达到效果!

但是这边的reMsg是不能被修改的!! 也就是修改的时候他不会按照我们js给的规则去向反显示,因为默认只有getter,我们可以提供一个setter:

<!DOCTYPE html>
<html>
<head>
  <title></title>
  <meta charset="utf-8">
  <script src="https://cdn.bootcss.com/vue/2.5.16/vue.min.js"></script>
</head>
<body> 
  <div id="box">
    {{msg}}
    <hr>
    {{reMsg}}
  </div>
  <script type="text/javascript">
    var vm = new Vue({
      el:'#box',
      data:{
        msg:'12345'
      },
      computed:{
        reMsg:{
          get:function(){
            return this.msg.split('').reverse().join('')
          },
          set:function(value){
            this.msg = value; //最后修改了msg  
          }
        }
      }
    });
    console.log(vm.reMsg = 'abcd');   //当我们修改这个变量的时候他的值也是跟随着我们js规则反向显示
  </script>
</body>
</html>

使用本站HTML/CSS/JS在线运行测试工具:http://tools.3water.com/code/HtmlJsRun,可得到如下测试运行效果:

vue.js计算属性computed用法实例分析

表达式计算demo:

<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport"
     content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <!-- Vue.js -->
  <script src="https://cdn.bootcss.com/vue/2.5.16/vue.min.js"></script>
</head>
<body>
<div>
  <!--# 如表达式如果过长,或逻辑更为复杂时,就会变得臃肿甚至难以阅读和维护 #-->
  {{ text.split(',').reverse().join(',') }}
  <!--# 所以在遇到复杂的逻辑时应该使用计算机属性 #-->
</div>
<div id="app">
  {{ reversedText }}
</div>
</body>
</html>
<script>
  var app = new Vue({
    el:'#app',
    data:{
      text:'123,456'
    },
    //所有的计算属性都以函数的形式写在vue实例内的computed选项内,最终返回计算的结果
    computed:{
      reversedText:function () {
        //这里的this指向的是当前的vue实例
        return this.text.split(',').reverse().join(',');
      }
    }
  })
</script>

使用本站HTML/CSS/JS在线运行测试工具:http://tools.3water.com/code/HtmlJsRun,可得到如下测试运行效果:

vue.js计算属性computed用法实例分析

希望本文所述对大家vue.js程序设计有所帮助。

Javascript 相关文章推荐
Javascript 读后台cookie代码
Sep 15 Javascript
JavaScript 动态改变图片大小
Jun 11 Javascript
js动态添加事件并可传参数示例代码
Oct 21 Javascript
jquery ajax post提交数据乱码
Nov 05 Javascript
浅析JavaScript中的隐式类型转换
Dec 05 Javascript
使用jquery prev()方法找到同级的前一个元素
Jul 11 Javascript
jQuery移除tr无效的解决方法(tr是动态添加)
Sep 22 Javascript
用JavaScript实现对话框的教程
Jun 04 Javascript
纯js的右下角弹窗实例
Mar 12 Javascript
详解 vue better-scroll滚动插件排坑
Feb 08 Javascript
es6数值的扩展方法
Mar 11 Javascript
使用mixins实现elementUI表单全局验证的解决方法
Apr 02 Javascript
vue.js实现的绑定class操作示例
Jul 06 #Javascript
vue.js实现插入数值与表达式的方法分析
Jul 06 #Javascript
详解浏览器缓存和webpack缓存配置
Jul 06 #Javascript
JS获取子节点、父节点和兄弟节点的方法实例总结
Jul 06 #Javascript
深入浅析AngularJs模版与v-bind
Jul 06 #Javascript
vue中子组件调用兄弟组件方法
Jul 06 #Javascript
vue中element 上传功能的实现思路
Jul 06 #Javascript
You might like
php !function_exists(&quot;T7FC56270E7A70FA81A5935B72EACBE29&quot;))代码解密
2011/01/07 PHP
PHP+sqlite数据库操作示例(创建/打开/插入/检索)
2016/05/26 PHP
php  PATH_SEPARATOR判断当前服务器系统类型实例
2016/10/28 PHP
javascript 哈希表(hashtable)的简单实现
2010/01/20 Javascript
js 数值项目的格式化函数代码
2010/05/14 Javascript
js点击页面其它地方将某个显示的DIV隐藏
2012/07/12 Javascript
select、radio表单回显功能实现避免使用jquery载入赋值
2013/06/08 Javascript
JS日期和时间选择控件升级版(自写)
2013/08/02 Javascript
Jquery绑定事件(bind和live的区别介绍)
2013/08/23 Javascript
通过$(this)使用jQuery包装后的方法或属性
2014/05/18 Javascript
jquery统计用户选中的复选框的个数
2014/06/06 Javascript
jQuery中:checkbox选择器用法实例
2015/01/03 Javascript
Javascript中innerHTML用法实例分析
2015/01/12 Javascript
JS实现文字链接感应鼠标淡入淡出改变颜色的方法
2015/02/26 Javascript
JQuery radio(单选按钮)操作方法汇总
2015/04/15 Javascript
轻松实现js选项卡切换效果
2016/09/24 Javascript
javascript入门之数组[新手必看]
2016/11/21 Javascript
AngularJS路由实现页面跳转实例
2017/03/03 Javascript
浅谈angularJS的$watch失效问题的解决方案
2017/08/11 Javascript
vue中js判断长时间不操作界面自动退出登录(推荐)
2020/01/22 Javascript
[01:01:41]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma BO3 第二场 1月31日
2021/03/11 DOTA
python实现多线程的两种方式
2016/05/22 Python
Python实用技巧之利用元组代替字典并为元组元素命名
2018/07/11 Python
Python读取Pickle文件信息并计算与当前时间间隔的方法分析
2019/01/30 Python
利用django+wechat-python-sdk 创建微信服务器接入的方法
2019/02/20 Python
浅析Python与Mongodb数据库之间的操作方法
2019/07/01 Python
python并发爬虫实用工具tomorrow实用解析
2019/09/25 Python
Python大批量搜索引擎图像爬虫工具详解
2020/11/16 Python
行政文员岗位职责
2013/11/08 职场文书
写求职信有哪些注意事项
2014/05/08 职场文书
电工技术比武方案
2014/05/11 职场文书
培训师岗位职责
2015/02/14 职场文书
数据库的高级查询六:表连接查询:外连接(左外连接,右外连接,UNION关键字,连接中ON与WHERE的不同)
2021/04/05 MySQL
MYSQL(电话号码,身份证)数据脱敏的实现
2021/05/28 MySQL
springboot应用服务启动事件的监听实现
2022/04/06 Java/Android
python读取并查看npz/npy文件数据以及数据显示方法
2022/04/14 Python