四、vue计算属性的使用

通常,在模板中可直接通过插值语法显示data中的属性,但是在某些情况,需要将某些数据进行转化后显示或者将多个数据结合起来显示。

    计算属性的基本使用
<body>
        <div id="app">
            <!-- 将张、三 拼接成一个完整的名字,在不使用计算属性,可以有以下写法 -->
            <h2>{
         
  {surname +   + name}}</h2>
            <h2>{
         
  {surname}} {
         
  {name}}</h2>
            <!--也可以使用methods 的方式写 -->
            <h2>{
         
  {getFullName()}}</h2>
            <!-- 以上方法第一、第二种方法,过于冗长繁琐,第三种方法,不符合阅读习惯,因为通常我们使用Mustache会直接插值,而不是调用方法 -->
            <!-- 因此,就需要使用计算属性 -->
            <h2>{
         
  {fullName}}</h2>
        </div>
        <script src="./js/vue.js"></script>
        <script>
            const app = new Vue({
            
     
                el: #app,
                data: {
            
     
                    // 模拟后端传参
                    surname: 张,
                    name: 三

                },
                methods: {
            
     
                    getFullName: function(){
            
     
                        return this.surname +   + this.name
                    }

                },
                // 计算属性,不同于方法,其类似于变量
                computed: {
            
     
                    // 在定义计算属性时,一般不加动词get等,命名方式类似变量,在模板中也同变量一样使用
                    fullName: function(){
            
     
                        return this.surname +   + this.name 
                    }

                }
            })
        </script>
    </body>
    计算属性的复杂操作
<body>
        <div id="app">
            <h2>总价:{
         
  {totlePrice}}</h2>
        </div>
        <script src="./js/vue.js"></script>
        <script>
            const app = new Vue({
            
     
                el: #app,
                data: {
            
     
                    // 计算下面这些书籍的总价
                    books:[
                        {
            
     id: 101,name: Uinx编程技术,price: 108},
                        {
            
     id: 102,name: 代码大全,price: 99},
                        {
            
     id: 103,name: 深入理解计算机原理,price: 70},
                        {
            
     id: 104,name: 现代操作系统,price: 58},
                    ]

                },
                // 计算属性,不同于方法,其类似于变量
                computed: {
            
     
                    // 在定义计算属性时,一般不加动词get等,命名方式类似变量,在模板中也同变量一样使用
                    totlePrice: function(){
            
     
                        let result = 0;
                        for (i = 0; i < this.books.length; i++){
            
     
                            result += this.books[i].price;
                        }
                        return result;
                    }

                }
            })
        </script>
    </body>
经验分享 程序员 微信小程序 职场和发展