zoukankan      html  css  js  c++  java
  • computed计算属性(get和set)

    computed:(计算属性)

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 
     4 <head>
     5     <meta charset="UTF-8">
     6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     7     <meta http-equiv="X-UA-Compatible" content="ie=edge">
     8     <title>Document</title>
     9 </head>
    10 
    11 <body>
    12 
    13     <div id="app">
    14         <h1>{{firstName}}</h1>
    15         <h1>{{lastName}}</h1>
    16         <h1>{{fullName}}</h1>
    17         <h1>{{ageGroup}}</h1>
    18         <button type="button" @click="changeName">将 fullName 的修改成 '朱帅旗 . 克里斯蒂安'</button>
    19     </div>
    20 
    21     <script src="./vue.js"></script>
    22     <script>
    23 
    24         new Vue({
    25             data: {
    26                 firstName: '赵胤祯',
    27                 lastName: '尼古拉斯',
    28                 age: 60
    29             },
    30             methods: {
    31                 changeName: function () {
    32                     this.fullName = '朱帅旗 . 克里斯蒂安'
    33                 }
    34             },
    35             computed: {
    36                 // 计算属性的完整用法
    37                 fullName: {
    38                     get: function () {
    39                         return this.firstName + ' . ' + this.lastName
    40                     },
    41                     set: function (newFullName) {
    42                         newFullName = newFullName.split(' . ')  // ['朱帅旗', '克里斯蒂安']
    43                         this.firstName = newFullName[0]
    44                         this.lastName = newFullName[1]
    45                     }
    46                 },
    47                 // 只需要 get 方法用法
    48                 /* 
    49                 一般来说:0(初生)-6岁为婴幼儿;7-12岁为少儿;13-17岁为青少年;
    50                 18-45岁为青年;46-69岁为中年;>69岁为老年。性质为分段。
    51                 */
    52                 // ageGroup: {
    53                 //     get: function () {
    54                 //         if (this.age > 69) {
    55                 //             return '老年'
    56                 //         } else if (this.age >= 46) {
    57                 //             return '中年'
    58                 //         } else if (this.age >= 18) {
    59                 //             return '青年'
    60                 //         } else if (this.age >= 13) {
    61                 //             return '青少年'
    62                 //         } else if (this.age >= 7) {
    63                 //             return '少儿'
    64                 //         } else if (this.age >= 0) {
    65                 //             return '婴幼儿'
    66                 //         }
    67                 //     }
    68                 // },
    69                 // 如果计算属性不需要 set 方法,则可以简写成如下形式:
    70                 ageGroup: function () {
    71                     if (this.age > 69) {
    72                         return '老年'
    73                     } else if (this.age >= 46) {
    74                         return '中年'
    75                     } else if (this.age >= 18) {
    76                         return '青年'
    77                     } else if (this.age >= 13) {
    78                         return '青少年'
    79                     } else if (this.age >= 7) {
    80                         return '少儿'
    81                     } else if (this.age >= 0) {
    82                         return '婴幼儿'
    83                     }
    84                 }
    85             }
    86         }).$mount('#app')
    87 
    88     </script>
    89 </body>
    90 
    91 </html>

    get:是获取

    set:是重新设置

    一般只用get的时候,可以省略set

    • 同时用set和get
     computed: {
                    // 计算属性的完整用法
                    fullName: {
                        get: function () {
                            return this.firstName + ' . ' + this.lastName
                        },
                        set: function (newFullName) {
                            newFullName = newFullName.split(' . ')  // ['朱帅旗', '克里斯蒂安']
                            this.firstName = newFullName[0]
                            this.lastName = newFullName[1]
                        }
                    },
    • 只用get,可以写get,也可以省略get
        ageGroup: function () {
                        if (this.age > 69) {
                            return '老年'
                        } else if (this.age >= 46) {
                            return '中年'
                        } else if (this.age >= 18) {
                            return '青年'
                        } else if (this.age >= 13) {
                            return '青少年'
                        } else if (this.age >= 7) {
                            return '少儿'
                        } else if (this.age >= 0) {
                            return '婴幼儿'
                        }
                    }
     
     
     
     
    补充理解:(vue)
    data里面不必写 sum,之前老忘记,导致报错,set里面的参数就是sum的新值
    <div id="app">
        价格:<input type="text" v-model.number="price">
        数量:<input type="text" v-model.number="num">
        总价 <input type="text"v-model.number='sum'>
            
        </div>
        <script src="vue.js"></script>
        <script>
    
            new Vue({
                el:"#app",
                data:{
                    price:0,
                    num:0,
                    
                },
                computed:{
                    // 对象方法的简写 嘿嘿,温故
                    sum:{
                        get() {
                            return this.price*this.num
                        },
                        set(new1) {
                            this.price= new1/this.num
                        }
                    }
                }
            })
        </script>

    不写set方法时,可以简写成如下格式,直接是sum()函数,这里的sum和要渲染的sum一样,别在data选项对象里写了,记住,老忘,嘿嘿

    1     computed:{
    2                 sum(){
    3                     return this.num1+this.num2
    4                 }
    5             }

    1.计算属性有一个get和set平常我们只用他的get是-一个简写
    2.get的意思是通过别的数据得到这个计算属性的值
    3.set的意思是如果这个计算属性的值发生变化就会触发set方法参数(newValue就是sum改变后的值)
    4.set什么时候会用到呢?计算属性用在表单元素中的时候会用到这个set

    这次理解的更深一点了

  • 相关阅读:
    Linux下升级gcc版本(9.1.0版本)
    Linux/CentOS系统同步网络时间的2种方法详解
    为什么使用promise
    总结js深拷贝和浅拷贝
    js闭包理解
    select框实现多选的功能
    动态添加element-ui组件
    总结鼠标移入移出事件
    echarts提示框太长,导致显示不全 ,撑大div框的问题
    vue项目中管理定时器
  • 原文地址:https://www.cnblogs.com/wszzj/p/12287023.html
Copyright © 2011-2022 走看看