zoukankan      html  css  js  c++  java
  • 计算属性

    计算属性的认识

    在模板中可以直接通过插值语法显示一些data中的数据。 但是在某些情况,我们可能需要对数据进行一些转化后再显示,或者需要将多个数据结合起来进行显示 比如我们有firstName和lastName两个变量,我们需要显示完整的名称。 但是如果多个地方都需要显示完整的名称,我们就需要写多个{{firstName}} {{lastName}} ,这样就很杂糅,因此我们可以使用计算属性来写。

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Title</title>
    </head>
    <body>
    
    <div id="app">
      <h2>{{firstName + ' ' + lastName}}</h2>
      <h2>{{firstName}} {{lastName}}</h2>
    
      <h2>{{getFullName()}}</h2>
    
      <h2>{{fullName}}</h2>
    </div>
    
    <script src="../js/vue.js"></script>
    <script>
      const app = new Vue({
        el: '#app',
        data: {
          firstName: 'Lee',
          lastName: 'Geneyee'
        },
        // computed: 计算属性()
        computed: {
          fullName: function () {
            return this.firstName + ' ' + this.lastName
          }
        },
        methods: {
          getFullName() {
            return this.firstName + ' ' + this.lastName
          }
        }
      })
    </script>
    
    </body>
    </html>

    上述代码中,我们可以发现无论是mustache语法,或者是计算属性,或者methods。那么,computed与methods有怎样的不同点呢。

    computed与methods

    computed里的方法在初始化执行过后,只要任何值有更新,那么所有在computed计算属性里和其相关的值都会更新。methods只有在调用的时候才会执行对应的方法,不会自动同步数据。

    computed计算属性跟methods在内部的函数写起来没有什么区别,只是在调用的时候不一样。

    计算属性的缓存

    我们依旧可以拿上面的例子,来试试。我们在div当中多次使用fullName与getFullName

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Title</title>
    </head>
    <body>
    
    <div id="app">
      <h2>{{firstName}} {{lastName}}</h2>
    
      <h2>{{getFullName()}}</h2>
      <h2>{{getFullName()}}</h2>
      <h2>{{getFullName()}}</h2>
      <h2>{{getFullName()}}</h2>
    
      <h2>{{fullName}}</h2>
      <h2>{{fullName}}</h2>
      <h2>{{fullName}}</h2>
      <h2>{{fullName}}</h2>
    
    </div>
    
    <script src="../js/vue.js"></script>
    <script>
      const app = new Vue({
        el: '#app',
        data: {
          firstName: 'Li',
          lastName: 'Jingyi'
        },
        // computed: 计算属性()
        computed: {
          fullName: function () {
            console.log("computed")
            return this.firstName + ' ' + this.lastName
          }
        },
        methods: {
          getFullName() {
            console.log("methods")
            return this.firstName + ' ' + this.lastName
          }
        }
      })
    </script>
    
    </body>
    </html>

    总而言之,computed计算属性的缓存原理在我们处理大量数据的时候使用可以大大提高效率,不必在数据没有发生改变的时候重新获取数据的值,可直接获取到结果,并且只执行绑定依赖的方法。methods里方法在依赖的值改变后,只有设置触发才会重新执行methods里相关的方法。

    关于computed的一些使用

    使用了计算属性以后,觉得这个真的非常好用,在写小demo的时候。记得有个小demo是一个书籍购物车的书写,其中有个功能为计算出最后购物车的总价,这里就使用了计算属性来写,非常简洁。

    const app=new Vue({
        el: "#app",
        data: {
            books: [
                {id: 1, name: "《算法导论》", date: 2006.9, price: 85.00, count: 1},
                {id: 2, name: "《UNIX编程艺术》", date: 2006.2, price: 59.00, count: 1},
                {id: 3, name: "《编程》", date: 2006.10, price: 39.00, count: 1},
                {id: 4, name: "《代码大全》", date: 2006.3, price: 128.00, count: 1}
            ]
        },
        computed:{
            totalprice:function( ){
                let result=0;
                for(let i=0;i<this.books.length;i++){
                    result +=this.books[i].price*this.books[i].count
                }
                return result
            }
        },
        filters:{
            pri:function(obj){
            return '¥'+obj.toFixed(2)
            }
        }
    
    })

  • 相关阅读:
    死锁
    线程池
    jQuery param()作用与使用方法
    jQuery remove()与jQuery empty()的区别
    jQuery局部动态刷新
    jQuery事件函数位置放置的两种方法
    跨语言通信方案的比较—Thrift、Protobuf和Avro
    Nodejs下如何判断文件夹的存在以及删除文件夹下所有的文件
    如何缓存hbase数据以减少下次取数据的时间
    javascript Date对象的介绍及linux时间戳如何在javascript中转化成标准时间格式
  • 原文地址:https://www.cnblogs.com/ljylearnsmore/p/14122147.html
Copyright © 2011-2022 走看看