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 OOP包机制,类创建的方法定义
Nov 02 Javascript
基于jquery自己写tab滑动门(通用版)
Oct 30 Javascript
js对table的td进行相同内容合并示例详解
Dec 27 Javascript
jquery.form.js实现将form提交转为ajax方式提交的方法
Apr 07 Javascript
jQuery实现监控页面所有ajax请求的方法
Dec 10 Javascript
leaflet的开发入门教程
Nov 17 Javascript
windows下vue-cli及webpack搭建安装环境
Apr 25 Javascript
js实现简易聊天对话框
Aug 17 Javascript
BootStrap入门学习第一篇
Aug 28 Javascript
Vue+jquery实现表格指定列的文字收缩的示例代码
Jan 09 jQuery
vue-cli3跨域配置的简单方法
Sep 06 Javascript
vue自定义标签和单页面多路由的实现代码
May 03 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+Mysql实现多关键字与多字段生成SQL语句的函数
2014/11/05 PHP
PHP程序中的文件锁、互斥锁、读写锁使用技巧解析
2016/03/21 PHP
Joomla简单判断用户是否登录的方法
2016/05/04 PHP
php页面跳转session cookie丢失导致不能登录等问题的解决方法
2016/12/12 PHP
PHP实现递归的三种方法
2020/07/04 PHP
JS模拟多线程
2007/02/07 Javascript
深入浅出分析javaScript中this用法
2015/05/09 Javascript
AngularJS  $modal弹出框实例代码
2016/08/24 Javascript
jQuery Ajax 实现分页 kkpager插件实例代码
2017/08/10 jQuery
详解jQuery中的isPlainObject()使用方法
2018/02/27 jQuery
聊聊JS动画库 Velocity.js的使用
2018/03/13 Javascript
详解webpack-dev-server使用方法
2018/09/14 Javascript
vue插件draggable实现拖拽移动图片顺序
2018/12/01 Javascript
javascript使用Blob对象实现的下载文件操作示例
2020/04/18 Javascript
Vue 实例中使用$refs的注意事项
2021/01/29 Vue.js
Python中非常实用的一些功能和函数分享
2015/02/14 Python
人生苦短我用python python如何快速入门?
2018/03/12 Python
Python字符串格式化f-string多种功能实现
2020/05/07 Python
Python使用Chrome插件实现爬虫过程图解
2020/06/09 Python
python线程池 ThreadPoolExecutor 的用法示例
2020/10/10 Python
浅析Python 中的 WSGI 接口和 WSGI 服务的运行
2020/12/09 Python
3D动画《斗罗大陆》上线当日播放过亿
2021/03/16 国漫
移动端Html5中百度地图的点击事件
2019/01/31 HTML / CSS
Gucci法国官方网站:意大利奢侈品牌
2018/07/25 全球购物
德国、奥地利和瑞士最大的旅行和度假门户网站:HolidayCheck
2019/11/14 全球购物
应届医学毕业生求职信分享
2013/12/02 职场文书
大学班长的职责
2014/01/27 职场文书
开展党的群众路线教育实践活动方案
2014/02/05 职场文书
保护黄河倡议书
2014/05/16 职场文书
广告宣传策划方案
2014/05/21 职场文书
小学综治宣传月活动总结
2014/07/02 职场文书
诚实守信演讲稿
2014/09/01 职场文书
民主评议党员自我评价材料
2014/09/18 职场文书
试用期旷工辞退通知书
2015/04/17 职场文书
个人工作总结怎么写?
2019/04/09 职场文书
MySQL基础(一)
2021/04/05 MySQL