Vue使用函数实现计算属性、计算属性的实现和简写

1. 使用函数实现计算属性

当修改姓或名,vue会去重新加载模板,然后函数也会被调用。但如果模板中存在多个fullName(),则会被调用多次而不是一次

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javaScript" src="../js/vue.js"></script>
</head>
<body>

<div id="root">
    姓:<input type="text" v-model="firstName"> <br/>
    名:<input type="text" v-model="lastName"> <br/>
    全名:<span>{{fullName()}}</span>
</div>

<script type="text/javascript">
    new Vue({
        el: '#root',
        data: {
            firstName: '张',
            lastName: '三'
        },
        methods: {
            fullName() {
                return this.firstName + '-' + this.lastName
            }
        }
    })
</script>

</body>
</html>

效果如下:
函数实现计算属性

2. 计算属性

通过computed来定义计算属性。计算属性不能通过vm._data访问

可以设置getter方法

  1. 当有人读取fullName时,get就会被调用,且返回值就作为fullName的值
  2. getter调用时候。初次读取fullName时,或所依赖的数据发生变化时

可以设置setter方法。当fullName被修改时setter被调用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javaScript" src="../js/vue.js"></script>
</head>
<body>

<div id="root">
    姓:<input type="text" v-model="firstName"> <br/>
    名:<input type="text" v-model="lastName"> <br/>
    全名:<span>{{fullName}}</span>
</div>

<script type="text/javascript">
    const vm = new Vue({
        el: '#root',
        data: {
            firstName: '张',
            lastName: '三'
        },
        computed: {
            fullName: {
                get() {
                    // console.log(this) //此处的this是vm
                    return this.firstName + '-' + this.lastName
                },
                set(value) {
                    const arr = value.split('-')
                    this.firstName = arr[0]
                    this.lastName = arr[1]
                }
            }
        }
    })
</script>

</body>
</html>

效果如下:
计算属性

3. 计算属性简写

当计算属性只要getter,没有setter,可以进行简写

        computed: {
            fullName() {
                return this.firstName + '-' + this.lastName

            }
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值