# 看案例的用法

# 1 把被监听的数据协作函数

<div id="app">
       <span>请输入你喜欢的城市名称</span> <input type="text" v-model="cityName" />
 </div>
var vm = new Vue({
            el: '#app',
            data: {
              cityName: "杏花林"
               
            },
            watch: {
             cityName(newName, oldName) {
              
                  console.log(this.cityName)
               },            
                deep:true, // 深度监听
                immediate: true,// 第一次加载就被监听
            },
            methods: {
             
            }
        })

# 2 写作方法的引用

<div id="app">
       <span>请输入你喜欢的城市名称</span> <input type="text" v-model="cityName" />
 </div>
var vm = new Vue({
            el: '#app',
            data: {
              cityName: "杏花林"
               
            },
            watch: {
              cityName: 'nameChange', //注意 要放在引号中
                deep:true, // 深度监听
                immediate: true,// 第一次加载就被监听
            },
            methods: {
               nameChange() {
                    console.log("你改变文本了")
                }
            }
        })

# 3 要监听的是一个对象的时候

<div id="app">
       <span>请输入你喜欢的城市名称</span> <input type="text" v-model="cityName.name" />
 </div>
var vm = new Vue({
            el: '#app',
            data: {
              cityName:{name:"杏花村","ids":1}
               
            },
            watch: {
             handler(newName, oldName) {
                      
                        // 无论监听什么,无论以上三种哪个函数若有参数 第一个参数为需要监听的(cityName.name)改变后的新数据,第二个参数为需要监听的(cityName.name)之前的数据 newName 可以改为hhh 同理第二个参数。
                        console.log(newName) // 只要鼠标进入输入框有所改变,就会触发
                    },
                deep:true, // 深度监听
                immediate: true,// 第一次加载就被监听
            },
            methods: {
        
            }
        })
  • 注意不知怎么回事,深度监听对象,没法实现其内部例如 4。

# 4 下面的例子,并不起作用,还在研究怎么回事。

<div id="app">
       <span>请输入你喜欢的城市名称</span> <input type="text" v-model="cityName.name" />
 </div>
var vm = new Vue({
            el: '#app',
            data: {
              cityName:{name:"杏花村","ids":1}
               
            },
            watch: {
           cityName: {
                    handler(newName, oldName) {
                        // ...
                        console.log(this.cityName.name)
                    },
                },
                deep:true, // 深度监听
                immediate: true,// 第一次加载就被监听
            },
            methods: {
        
            }
        })