Day4.14计算属性和监听

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>计算属性和监听</title>
 6     <script src="lib/js/vue.js"></script>
 7 </head>
 8 <body>
 9 <!--
10 1.计算属性,
11   在computed属性对象中定义计算属性的方法
12   在页面中使用{{方法名}}来显示计算结果
13 2.监视属性,
14   通过vm对象的$watch()或watch配置来监视指定的属性
15   当属性变化时,回调函数自动调用,在函数内部进行计算
16 3.计算属性高级
17   通过getter/setter实现对属性数据的显示和监视
18   计算属性存在缓存,多次读取只执行一次getter计算
19 
20   getter:  属性的get方法
21   setter:  属性的set方法
22 -->
23 <div id="app">
24     姓<input type="text" v-model="firstName" /><br />
25     名<input type="text" v-model="lastName" /><br /><br />
26 
27     姓名1(单向)<input type="text" v-model="fullName1" /><br />
28     姓名2(单向)<input type="text" v-model="fullName2" /><br />
29     姓名3(双向)<input type="text" v-model="fullName3" />
30 
31 </div>
32 <script>
33     var vm = new Vue({
34         el:'#app',
35         data:{
36             firstName:'A',
37             lastName:'B',
38             // fullName1:'A B'
39             fullName2:'A B'
40         },
41         computed:{
42             // 什么时候执行:
43             // 1.初始化显示时
44             // 2.相关的data数据改变时
45             fullName1(){   // 计算属性中的一个方法,方法的返回值作为属性值
46                 console.log('fullName1()');
47                 return  this.firstName +' '+ this.lastName
48             },
49             fullName3:{
50                 //回调函数,当需要读取当前属性值时回调,根据相关的数据计算并返回当前属性的值
51                 get(){
52                     return  this.firstName +' '+ this.lastName
53                 },
54                 //回调函数(监视),当属性值发生改变时回调,更新相关的属性数据
55                 set(value){  //value就是更新的fullname3
56                     const names = value.split(' ');
57                     this.firstName = names[0];
58                     this.lastName = names[1]
59                 }
60             }
61 
62         },
63         watch:{ //配置监视
64             firstName:function (value) { //firstname发生了变化
65                 // this 就是 vm 对象
66                 this.fullName2 = value + ' '+ this.lastName
67             }
68         }
69     });
70          vm.$watch('lastName',function (value) {//更新fullname2
71         this.fullName2 = this.firstName + ' ' + value
72 
73     })
74 </script>
75 </body>
76 </html>

猜你喜欢

转载自www.cnblogs.com/zhaohui-116/p/12241525.html
今日推荐