# 看案例的用法
# 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: { | |
} | |
}) |