在vue js中,使用v-model可以雙向綁定數(shù)據(jù)。然而,在某些情況下,v-model失效了。此時(shí),用戶輸入的內(nèi)容無(wú)法綁定到Vue實(shí)例的數(shù)據(jù)中,導(dǎo)致無(wú)法實(shí)時(shí)響應(yīng)。
<template>
<div>
<input type="text" v-model="message">
<p>{{ message }}</p>
</div>
</template>
<script>
export default {
data() {
return {
message: ''
}
}
}
</script>
在上面的代碼中,我們使用v-model綁定input輸入框與Vue實(shí)例的message數(shù)據(jù)。當(dāng)用戶在輸入框中輸入內(nèi)容時(shí),該內(nèi)容會(huì)實(shí)時(shí)更新到p標(biāo)簽中。
然而,如果我們?cè)谀承┣闆r下修改了input的value值(比如通過(guò)js修改),那么v-model會(huì)失效,message數(shù)據(jù)不會(huì)實(shí)時(shí)更新。這時(shí),我們需要用原生的js事件監(jiān)聽來(lái)手動(dòng)實(shí)現(xiàn)。
<template>
<div>
<input type="text" :value="message" @input="updateMessage">
<p>{{ message }}</p>
</div>
</template>
<script>
export default {
data() {
return {
message: ''
}
},
methods: {
updateMessage(e) {
this.message = e.target.value
}
}
}
</script>
上述代碼中,我們使用:value綁定value值,@input監(jiān)聽input事件并調(diào)用updateMessage方法手動(dòng)更新message數(shù)據(jù)。
總之,當(dāng)v-model失效時(shí),需要通過(guò)監(jiān)聽事件手動(dòng)更新數(shù)據(jù)來(lái)保證能夠?qū)崟r(shí)響應(yīng)。