watch
监听器监听data
里面的值,当值有变化时,就会触发事件。
watch
监听一个变数:
<div id="app">
<h3>watch 监听单一变数</h3>
<label for="name">监听变数:</label>
<input type="text" id="name" v-model="tempName">
<P>大於五个字: {{ big }}</P>
<p>小於五个字: {{ small }}</p>
</div>
wacth
监听tempName
里面的值。
const App = {
data() {
return {
small: "",
tempName: "",
};
},
watch: {
tempName(a, b) {
console.log(a, b);
if(a.length > 5 ){
this.big = `文字超过${b.length}个字`;
}else {
this.small = `文字未超过${a.length}个字`;
}
},
}
};
Vue.createApp(App).mount("#app");
观察console.log,参数a
为新的值,b
为旧的值,一开始还没输入input框,b
会是一个空值。
watch
与computed
不同的地方watch
computed
<div id="app">
<label for="store">店家名称</label>
<input type="text" v-model="store">
<br>
<label for="productName">商品名称</label>
<input type="text" v-model="productName">
<br>
<label for="productPrice">商品价格</label>
<input type="number" v-model.number="productPrice">
<p>computed: {{ comVale }}</p>
<p>watch: {{ watchValue }}</p>
</div>
const App = {
data() {
return {
watchValue: "",
// 单一产品
store:"高雄",
productName: "裤子",
productPrice: 500,
};
},
computed: {
comVale() {
return `${this.store},${this.productName},${this.productPrice}`
}
},
watch: {
store() {
this.watchValue = `${this.store},${this.productName},${this.productPrice}`
},
productName() {
this.watchValue = `${this.store},${this.productName},${this.productPrice}`
},
productPrice() {
this.watchValue = `${this.store},${this.productName},${this.productPrice}`
},
}
};
Vue.createApp(App).mount("#app");
第一次进入画面computed
会先执行一次,而watch
则是等待被触发。watch
一次只能监听一个变数,所以这边就必须写三个函式来使用,如果变数有更动,就会触发函式。如果要监听多个变数产生一个值建议使用computed
,会比较适合。
watch
监听多个变数<div id="app">
<label for="store">店家名称:</label>
<input type="text" v-model="product.store"><br>
<label for="productName">商品名称:</label>
<input type="text" v-model="product.name"><br>
<label for="productPrice">商品价格:</label>
<input type="number" v-model.number="product.price">
<p>value: {{ value }}</p>
</div>
const App = {
data() {
return {
product: {
store:"高雄",
name: "裤子",
price: 500,
},
};
},
watch: {
product: {
handler(n, o) {
console.log(n, o);
this.value = `${this.product.store},${this.product.name},${this.product.price}`
},
deep: true,
}
}
};
Vue.createApp(App).mount("#app");
使用watch
做到多个变数的监听,data
就要改为物件,watch
里面改为handler
函式来做触发,deep
也要改为true
,才会正常运行。
>>: [2021铁人赛 Day16] General Skills 13
本节是以 Golang 上游 8854368cb076ea9a2b71c8b3c8f675a8e1...
tags: ItIron2021 Javascript 作者碎碎念 当时在用这一系列题目跑模拟面试活...
EditText与TextView相似,但EditText用於APP需要输入资料时,例如:输入姓名、...
目前迷失在Blend里面,谁可以把我救出来 https://www.youtube.com/watc...
灵异现象 - 为什麽打我不打他 credit: unknown 灵感来源:UCCU Hacker 故...