005 Vue 计算属性

计算属性 computed

                data中的数据可以直接在html中通过差值表达式直接引用,但是有时候,我们想要data中的数据经过转换或者简单的计算再展示

            【注意】computed中定义的函数而非变量

 

1. 简单使用

                computed:{

                       fullName(){

                           return this.lastName + " " + this.firstName;

                       }

                   }

 

2. 复杂使用

                当计算比较复杂时,就显示出计算属性的优势了

                new Vue({

                    el: "#app",

                    data:{

                        firstName: "Blog",

                        lastName: "Carrey",

                        books:[

                            {id:001, name: '计算机原理', price: 120},

                            {id:002, name: '计算方法论', price: 123},

                            {id:003, name: '人机工程学', price: 201},

                            {id:004, name: '最优化理论', price: 223},

                        ],

                    },

                    computed:{

                        fullName(){

                            return this.lastName + " " + this.firstName;

                        },

                        totalPrice(){

                            var TP = 0;

                            for(var book of this.books){

                                TP += book.price;

                            }

                            return TP;

                        }

                    }

                })

 

3. 每一computed对象的元素都有一个set变量和get变量,即完整的computed属性应写成:

                    fullName:{

                        set:function(newValue){

                            var res = newValue.split(" ");

                            this.firstName = res[0];

                            this.lastName = res[1];

                        },

                        get: function(){

                            return this.lastName + " " + this.firstName;

                        }

                    },

                其中,调用属性fullName时,调用的是get函数,给属性fullName赋值时,调用的是set函数

           

 

4. 可以看到,computed中定义的是函数,这和methods是一样的,那为什么还多此一举来一个computed呢

                因为函数每次被调用时,都会重新执行一遍

                而计算属性会进行缓存,如果多次使用,计算属性只会计算一次

 

posted @ 2020-03-19 17:00  CarreyB  阅读(127)  评论(0编辑  收藏  举报