vue-总结2-计算属性-侦听属性

计算属性

<div id="app">
        <p> 没有反向: {{ info }} </p>
        <p> {{ info.split('').reverse().join('') }} </p>
        <p> 反向字符: {{ reserseInfo }} </p>
    </div>
 /* 
        业务: 如果我们想要让一个字符串反向,应该如何操作?
            1. 部分逻辑操作
                字符串 -》 数组  -》 反向 -》 字符串
            2. 思考: 这部分逻辑操作往哪里写?
                - methods   更适合用户交互
                - 直接写在mustache里面

            以上方案,我们发现将逻辑交给了v做,有点违背了关注点分离 

            新的方案
                1. 能写逻辑,逻辑要放在vm
                2. mustache里面更希望得到的事一个类似全局变量的内容

            Vue提供的方案叫做  计算属性
            
            Vure里面默认处理了computed里面的方法调用,我们直接写计算属性名称即可,不需要加()
    */
    new Vue({
        el: '#app',
        data: {
            info: '你很美丽'
        },
        computed: {
            //这里面放的都是方法
            reserseInfo () {
                return this.info.split('').reverse().join('')
            }
        }
    })

侦听属性

 <div id="app">
        姓:<input type="text" v-model = "firstName"> <br>
        名:<input type="text" v-model = "lastName"> <br>
        全名:<input type="text" v-model = "fullName"> <br>
        <hr/>
        
		<!-- 深度监听 -->
 		单价: <input type="text" v-model = "money">

        <br>

        数量: <input type="text" v-model = "num">

        <hr>

        <p> 总价: {{ totalPrice }} </p>
 </div>
 /* 
        侦听属性【 监听 】 - watch
            1. 和data选项有关
 
        侦听属性 vs  计算属性  vs 方法

        项目中如何选择
            1. 如果是事件处理程序: 方法
            2. 如果是由某一个数据改变引起新的异步数据请求,那么我们可以watch
            3. 如果有逻辑处理,但是将来使用类似于变量,那么我们选择计算属性
    
     */
    new Vue({
        el: '#app',
        data: {
            firstName: '',
            lastName: '',
            fullName: '',
            num:1,
            money:2000,
            totalPrice:0
        },
        watch: {
            //watch是一个对象
            // watch里面存储的类型: 方法,对象,普通字符
            firstName ( val ) {//方法的名称和data选项中的key相同,是谁就监听谁
                console.log( val )
                console.log('firstName发生了改变')
                this.fullName = val + this.lastName
            },
            lastName ( val ) {
                this.fullName = this.firstName + val 
            },
			money(val){
				this.totalPrice=val*this.num
			},
			num:{
				deep:true,//代表深度监听
				handler(val){//num改变后执行的处理程序
				this.totalPrice=val*this.money
						}
				}
        }
    })
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值