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动态添加表格数据行(ASP后台数据库保存例子)
May 08 Javascript
获取3个数组不重复的值的具体实现
Dec 30 Javascript
HTML5+setCutomValidity()函数验证表单实例分享
Apr 24 Javascript
基于JS实现的倒计时程序实例
Jul 24 Javascript
使用jQuery处理AJAX请求的基础学习教程
May 10 Javascript
浅析javascript中的Event事件
Dec 09 Javascript
基于JavaScript实现屏幕滚动效果
Jan 18 Javascript
js遮罩效果制作弹出注册界面效果
Jan 25 Javascript
基于vue中css预加载使用sass的配置方式详解
Mar 13 Javascript
Servlet3.0与纯javascript通过Ajax交互的实例详解
Mar 18 Javascript
JavaScript实现预览本地上传图片功能完整示例
Mar 08 Javascript
vuex vue简单使用知识点总结
Aug 29 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自动选择 连接本地还是远程数据库
2010/12/02 PHP
纯php打造的tab选项卡效果代码(不用js)
2010/12/29 PHP
PHP 验证码不显示只有一个小红叉的解决方法
2013/09/30 PHP
PHP 中 Orientation 属性判断上传图片是否需要旋转
2015/10/16 PHP
PHP实现的折半查询算法示例
2017/10/09 PHP
关于window.pageYOffset和document.documentElement.scrollTop
2011/04/05 Javascript
基于jquery的文章中所有图片width大小批量设置方法
2013/08/01 Javascript
jquery 无限级下拉菜单的简单实现代码
2014/02/21 Javascript
Javascript中获取对象的原型对象的方法小结
2015/02/25 Javascript
JavaScript中逗号运算符介绍及使用示例
2015/03/13 Javascript
JS实现定时自动关闭DIV层提示框的方法
2015/05/11 Javascript
js限制input标签中只能输入中文
2015/06/26 Javascript
JavaScript实现将文本框的值插入指定位置的方法
2015/08/13 Javascript
JavaScript原生对象常用方法总结(推荐)
2016/05/13 Javascript
Angularjs实现搜索关键字高亮显示效果
2017/01/17 Javascript
node.js将MongoDB数据同步到MySQL的步骤
2017/12/10 Javascript
原生JS写Ajax的请求函数功能
2017/12/22 Javascript
Vue.js实现的购物车功能详解
2019/01/27 Javascript
Angular 中使用 FineReport不显示报表直接打印预览
2019/08/21 Javascript
JavaScript实时更新当前的时间的示例代码
2020/07/15 Javascript
JS canvas实现画板和签字板功能
2021/02/23 Javascript
js实现Element中input组件的部分功能并封装成组件(实例代码)
2021/03/02 Javascript
Python实现比较两个列表(list)范围
2015/06/12 Python
python中字符串类型json操作的注意事项
2017/05/02 Python
python 定义n个变量方法 (变量声明自动化)
2018/11/10 Python
Python 给屏幕打印信息加上颜色的实现方法
2019/04/24 Python
python SQLAlchemy的Mapping与Declarative详解
2019/07/04 Python
Django ORM 查询管理器源码解析
2019/08/05 Python
python3的数据类型及数据类型转换实例详解
2019/08/20 Python
Python同时迭代多个序列的方法
2020/07/28 Python
scrapy实践之翻页爬取的实现
2021/01/05 Python
Raleigh兰令自行车美国官网:英国凤头牌自行车
2018/01/08 全球购物
汽车维修专业毕业生的求职信分享
2013/12/04 职场文书
物理系毕业生自荐书
2014/06/13 职场文书
公司领导班子四风对照检查材料
2014/09/27 职场文书
OpenFeign实现远程调用
2022/08/14 Java/Android