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 相关文章推荐
JS Map 和 List 的简单实现代码
Jul 08 Javascript
js改变img标签的src属性在IE下没反应的解决方法
Jul 23 Javascript
JavaScript中的定时器之Item23的合理使用
Oct 30 Javascript
浅谈JavaScript 执行环境、作用域及垃圾回收
May 31 Javascript
省市联动效果的简单实现代码(推荐)
Jun 06 Javascript
canvas快速绘制圆形、三角形、矩形、多边形方法介绍
Dec 29 Javascript
jquery uploadify如何取消已上传成功文件
Feb 08 Javascript
javascript代码优化的8点总结
Jan 29 Javascript
JS正则表达式常见用法实例详解
Jun 19 Javascript
Vue项目从webpack3.x升级webpack4不完全指南
Apr 28 Javascript
微信小程序自定义弹出层效果
May 26 Javascript
详细分析React 表单与事件
Jul 08 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
实用函数4
2007/11/08 PHP
PHP Google的translate API代码
2008/12/10 PHP
php htmlspecialchars()与shtmlspecialchars()函数的深入分析
2013/06/05 PHP
在PHP上显示JFreechart画的统计图方法
2013/11/03 PHP
php实现保存submit内容之后禁止刷新
2014/03/19 PHP
php实现的支持imagemagick及gd库两种处理的缩略图生成类
2014/09/23 PHP
微信 开发生成带参数的二维码的实例
2016/11/23 PHP
PHP实现断点续传乱序合并文件的方法
2018/09/06 PHP
PHP后台备份MySQL数据库的源码实例
2019/03/18 PHP
用JavaScript调用WebService的示例
2008/04/07 Javascript
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(下:动画篇)
2010/03/24 Javascript
js实现全屏漂浮广告移入光标停止移动
2013/12/02 Javascript
JavaScript继承基础讲解(原型链、借用构造函数、混合模式、原型式继承、寄生式继承、寄生组合式继承)
2014/08/16 Javascript
详解AngularJS实现表单验证
2015/12/10 Javascript
移动端滑动插件Swipe教程
2016/10/16 Javascript
捕获未处理的Promise错误方法
2017/10/13 Javascript
JavaScript中利用Array filter() 方法压缩稀疏数组
2018/02/24 Javascript
vue路由拦截及页面跳转的设置方法
2018/05/24 Javascript
微信小程序位置授权处理方法
2019/06/13 Javascript
js与jquery获取input输入框中的值实例讲解
2020/02/27 jQuery
JavaScript实现10秒后再次获取验证码
2020/12/02 Javascript
python利用sklearn包编写决策树源代码
2017/12/21 Python
Python实现pdf文档转txt的方法示例
2018/01/19 Python
Python GUI布局尺寸适配方法
2018/10/11 Python
pytorch使用Variable实现线性回归
2019/05/21 Python
让你Python到很爽的加速递归函数的装饰器
2019/05/26 Python
Python日志器使用方法及原理解析
2020/09/27 Python
详解Canvas事件绑定
2018/06/27 HTML / CSS
荷兰街头时尚之家:Funkie House
2019/03/18 全球购物
保安的辞职报告怎么写
2014/01/20 职场文书
科技开发中心办公室主任岗位责任制
2014/02/10 职场文书
简单的项目建议书模板
2014/03/12 职场文书
通信工程求职信
2014/07/16 职场文书
毕业实习证明(4篇)
2014/10/28 职场文书
销售口号霸气押韵
2015/12/24 职场文书
2016暑期政治学习心得体会
2016/01/23 职场文书