1 <template>
2 <div>
3 <label>姓:<input type="text" placeholder="请输入姓氏" v-model="firstName"></label>
4 <p></p>
5 <label>名:<input type="text" placeholder="请输入名字" v-model="lastName"></label>
6
7 <p>-----------------------------------------------------------------------</p>
8 <!--单向-->
9 <label>姓 名:<input type="text" placeholder="请输入姓名" v-model="fullNameOne"></label>
10 <p></p>
11 <!--双向-->
12 <label>姓 名:<input type="text" placeholder="请输入姓名" v-model="fullNameTwo"></label>
13 <p></p>
14 <!--双向-->
15 <label>姓 名:<input type="text" placeholder="请输入姓名" v-model="fullNameThree"></label>
16 </div>
17 </template>
18
19 <script>
20 export default {
21 name: "ComputedAndWatch",
22 data(){
23 return {
24 firstName: '', // 姓
25 lastName: '', // 名
26 // 被watch监听改变
27 fullNameThree: ''
28 }
29 },
30 // 配置计算属性
31 computed: {
32 // 计算属性 姓名
33 fullNameOne: {
34 get(){
35 return this.firstName + '·' + this.lastName
36 }
37 },
38
39 fullNameTwo: {
40 get(){
41 // console.log(`调用了fullNameTwo的getter方法`);
42 return this.firstName + '·' + this.lastName;
43 },
44 set(value){
45 // console.log(`调用了fullNameTwo的setter方法, 值:${value}`);
46 // 1.更新firstName和lastName
47 let names = value.split('·');
48 console.log(names);
49 this.firstName = names[0];
50 this.lastName = names[1];
51 }
52 }
53 },
54 // 配置watch
55 watch: {
56 // 监听firstName
57 firstName(value){
58 console.log(`watch监视到firstName发生改变:${value}`);
59 // 更新fullNameThree
60 this.fullNameThree = value + '·' + this.lastName;
61 },
62
63 // 监听lastName
64 lastName(value){
65 console.log(`watch监视到lastName发生改变:${value}`);
66 // 更新fullNameThree
67 this.fullNameThree = this.firstName + '·' + value;
68 }
69 }
70 }
71 </script>
72
73 <style scoped>
74
75 </style>