vue2.0 基础学习目录
1.当监视的属性发生变化时,回调函数 handler 会自动调用进行相关操作
2. 监视的属性必须存在,才可以监视
3. 监视属性两种写法
在new vue时配置watch
在new vue创建完成后,通过 vm.$watch(‘监视的属性’,{ //监视的配置内容 })
4. 监视多级结构中某个属性的变化 对象.属性 监视
5. watch 默认不检测对象内部值的改变,可以通过 deep:true 进行深度监视
6. 监视属性不光可以监视data中的属性、对象也可以监视计算属性
7. 监视属性可以简写,但代价是不能再配置 immediate、deep
1 2 3 4 5 6 7 8
   | watch:{ 	personState(newValue,oldValue){ 		//回调处理函数 	} } vm.$watch('personState',function(newValue,oldValue){ 	//回调处理函数 })
  | 
- computed 计算属性能完成的watch都可以完成。watch可以完成的computed不一定能完成。例如:watch可以进行异步操作
 - 所有被vue管理的函数最好写成普通函数,这样this指向才vm或者组件对象实例
 - 所有不被vue管理的函数(定时器,ajax回调等)最好写成箭头函数,这样this指向才vm或者组件对象实例
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
   | <!DOCTYPE html> <html lang="en">     <head>         <meta charset="UTF-8" />         <meta http-equiv="X-UA-Compatible" content="IE=edge" />         <meta name="viewport" content="width=device-width, initial-scale=1.0" />         <title>11.监视属性</title>         <script src="../js/vue.js"></script>         <style></style>     </head>     <body>         <div id="root">             <h2>vue 监视属性</h2>             <span>人生真的是{{personState}}</span>             <br /><br />             <button @click="btnClick">修改人生的状态</button>             <hr />             <h3>对象内容x {{obj.x}}</span><br>             <button @click="btnXClick">btn add</button>             <hr />             <h3>对象内容y {{obj.y}}</span><br>             <button @click="btnYClick">btn add</button>         </div>     </body>     <script>         Vue.config.productionTip = false;         const vm = new Vue({             el: '#root',              data() {                 return {                     state: true,                     obj: { x: 10, y: 20 }                 };             },             methods: {                 btnClick() {                     this.state = !this.state;                 },                 btnXClick(){                     this.obj.x ++;                 },                 btnYClick(){                     this.obj.y++;                 },             },             computed: {                 personState() {                     return this.state ? '大起' : '大落';                 }             },
              
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
              watch: {                 personState:{                     handler(newValue, oldValue){                         console.log(                             `watch: 计算属性 personState 被修改了,原始值是:${oldValue} 新值为:${newValue}`                         );                     }                 },                 state: {                     immediate: true,                      handler(newValue, oldValue) {                         console.log(                             `watch: state 被修改了,原始值是:${oldValue} 新值为:${newValue}`                         );                     }                 },                                  'obj.x':{                     immediate: true,                      handler(newValue, oldValue) {                         console.log(                             `watch: obj.x 被修改了,原始值是:${oldValue} 新值为:${newValue}`                         );                     }                 },                                  'obj':{                     deep:true,                                            handler(newValue, oldValue) {                             console.log(`watch: obj 被修改了 obj.x:${newValue.x}    obj.x:${newValue.y}`);                     }                 },                 
                  personState(newValue, oldValue){                     console.log(                             `watch: 计算属性 personState 被修改了,原始值是:${oldValue} 新值为:${newValue}`                         );                 }             }         });                                                                                      </script> </html>
 
   | 
vue2.0 进阶学习的目录
完整代码可以在 GitHub