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判断浏览器类型的代码
Nov 05 Javascript
JavaScript 处理Iframe自适应高度(同或不同域名下)
Mar 29 Javascript
jQuery+Ajax实现无刷新分页
Oct 30 Javascript
使用js获取地址栏参数的方法推荐(超级简单)
Jun 14 Javascript
AngularJs表单验证实例代码解析
Nov 29 Javascript
前端 Vue.js 和 MVVM 详细介绍
Dec 29 Javascript
原生js获取浏览器窗口及元素宽高常用方法集合
Jan 18 Javascript
JS实现DIV高度自适应窗口示例
Feb 16 Javascript
使用vue2.0创建的项目的步骤方法
Sep 25 Javascript
JavaScript Canvas编写炫彩的网页时钟
Oct 16 Javascript
Vue中强制组件重新渲染的正确方法
Jan 03 Vue.js
详解JS数组方法
Nov 20 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
destoon调用自定义模板及样式的公告栏
2014/06/21 PHP
简单实用的PHP防注入类实例
2014/12/05 PHP
phpcms手机内容页面添加上一篇和下一篇
2015/06/05 PHP
Laravel5中Cookie的使用详解
2017/05/03 PHP
PHP批斗大会之缺失的异常详解
2019/07/09 PHP
PHP多进程简单实例小结
2019/11/09 PHP
JS实现div居中示例
2014/04/17 Javascript
使用JavaScript实现网页版Pongo设计思路及源代码分享
2014/06/16 Javascript
html的DOM中Event对象onabort事件用法实例
2015/01/21 Javascript
内容滑动切换效果jquery.hwSlide.js插件封装
2016/07/07 Javascript
Angularjs 事件指令详细整理
2017/07/27 Javascript
移动端网页开发调试神器Eruda的介绍与使用技巧
2017/10/30 Javascript
JavaScript怎样在删除前添加确认弹出框?
2019/05/27 Javascript
关于layui flow loading占位图的实现方法
2019/09/21 Javascript
Vue data的数据响应式到底是如何实现的
2020/02/11 Javascript
JavaScript禁止右击保存图片,禁止拖拽图片的实现代码
2020/04/28 Javascript
[01:37]PWL S2开团时刻DAY1&2——这符有毒
2020/11/20 DOTA
[02:16]完美世界DOTA2联赛PWL S3 集锦第三期
2020/12/21 DOTA
Python迭代器和生成器介绍
2015/03/06 Python
python操作mongodb根据_id查询数据的实现方法
2015/05/20 Python
浅谈Python中的闭包
2015/07/08 Python
pymongo中聚合查询的使用方法
2019/03/22 Python
Python一行代码实现快速排序的方法
2019/04/30 Python
parser.add_argument中的action使用
2020/04/20 Python
美国伊甸园兄弟种子公司:Eden Brothers
2018/07/01 全球购物
创建学习型党组织实施方案
2014/03/29 职场文书
村安全生产责任书
2014/08/25 职场文书
计划生育诚信协议书
2014/11/02 职场文书
工程资料员岗位职责
2015/04/13 职场文书
大国崛起英国观后感
2015/06/02 职场文书
女儿满月酒致辞
2015/07/29 职场文书
Mysql 如何批量插入数据
2021/04/06 MySQL
Java面试题冲刺第十六天--消息队列
2021/08/07 面试题
Pyhton爬虫知识之正则表达式详解
2022/04/01 Python
Nginx配置根据url参数重定向
2022/04/11 Servers
Android开发手册自定义Switch开关按钮控件
2022/06/10 Java/Android