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 相关文章推荐
jQuery中使用data()方法读取HTML5自定义属性data-*实例
Apr 11 Javascript
js中取得变量绝对值的方法
Jan 03 Javascript
JavaScript 基本概念
Jan 20 Javascript
jquery实现下拉框多选方法介绍
Jan 03 Javascript
axios基本入门用法教程
Mar 25 Javascript
jQuery选择器_动力节点Java学院整理
Jul 05 jQuery
解决vue 绑定对象内点击事件失效问题
Sep 05 Javascript
JS栈stack类的实现与使用方法示例
Jan 31 Javascript
vue data引入本地图片的两种方式小结
Nov 13 Javascript
vue 实现锚点功能操作
Aug 10 Javascript
JavaScript中while循环的基础使用教程
Aug 11 Javascript
js前端设计模式优化50%表单校验代码示例
Jun 21 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
[EPIC] Larva vs Flash ZvT @ Crossing Field [2017-10-09]
2020/03/17 星际争霸
php使用str_replace实现输入框回车替换br的方法
2014/11/24 PHP
PHP的反射机制实例详解
2017/03/29 PHP
laravel5 Eloquent 实现事务方式
2019/10/21 PHP
jQuery中需要注意的细节问题小结
2011/12/06 Javascript
使用jquery mobile做幻灯播放效果实现步骤
2013/01/04 Javascript
可自定义速度的js图片无缝滚动示例分享
2014/01/20 Javascript
js的alert样式如何更改如背景颜色
2014/01/22 Javascript
Javascript技术栈中的四种依赖注入详解
2016/02/23 Javascript
jQuery实现用户输入自动完成功能
2017/02/13 Javascript
最通俗易懂的javascript变量提升详解
2017/08/05 Javascript
Angularjs中ng-repeat的简单实例
2017/08/25 Javascript
浅析vue中常见循环遍历指令的使用 v-for
2018/04/18 Javascript
JS实现把一个页面层数据传递到另一个页面的两种方式
2018/08/13 Javascript
vue使用Font Awesome的方法步骤
2019/02/26 Javascript
vue中利用simplemde实现markdown编辑器(增加图片上传功能)
2019/04/29 Javascript
对layui初始化列表的CheckBox属性详解
2019/09/13 Javascript
原理深度解析Vue的响应式更新比React快
2020/04/04 Javascript
Python中map,reduce,filter和sorted函数的使用方法
2015/08/17 Python
详解Python的Flask框架中生成SECRET_KEY密钥的方法
2016/06/07 Python
使用python无账号无限制获取企查查信息的实例代码
2020/04/17 Python
如何基于Python实现word文档重新排版
2020/09/29 Python
python Timer 类使用介绍
2020/12/28 Python
利用CSS3的特性改变文本选中时的颜色
2013/09/11 HTML / CSS
Canvas 文本转粒子效果的实现代码
2019/02/14 HTML / CSS
将时尚融入珠宝:Adornmonde
2019/10/17 全球购物
String、StringBuffer、StringBuilder有区别
2015/09/18 面试题
思想汇报格式
2014/01/05 职场文书
项目考察欢迎辞
2014/01/17 职场文书
优秀党务工作者事迹材料
2014/05/07 职场文书
班子四风对照检查材料思想汇报
2014/09/29 职场文书
2015年信贷员工作总结
2015/04/28 职场文书
音乐会主持人开场白
2015/05/28 职场文书
2019毕业典礼主持词!
2019/07/05 职场文书
Python编程super应用场景及示例解析
2021/10/05 Python
简单聊聊TypeScript只读修饰符
2022/04/06 Javascript