當我們使用Vue進行表單輸入的時候,經常會遇到輸入中斷的問題。比如,當用戶在一定時間內沒有輸入任何內容時,我們會希望在表單中顯示一個默認值或者在表單下方提示用戶需要填寫該字段。
<template>
<div>
<input v-model="message" type="text" >
<p v-show="showDefault">請輸入內容</p>
</div>
</template>
<script>
export default {
data() {
return {
message: '',
showDefault: true
}
},
watch: {
message(newVal) {
if (newVal === '') {
this.showDefault = true;
} else {
this.showDefault = false;
}
}
}
}
</script>
上面的代碼演示了如何在Vue中使用v-model綁定輸入的內容,并且通過watch屬性來監聽輸入框的值。當輸入框的值發生改變時,會自動更新showDefault的值,從而顯示或者隱藏提示框。
但是在實際開發中,我們還經常會遇到更復雜的輸入中斷問題。比如,在輸入框中輸入過程中,需要調用API獲取數據,但是輸入框的值發生改變,需要取消之前的API請求,重新發起請求。下面是一個示例代碼:
<template>
<div>
<input ref="searchInput" v-model="inputValue" @input="handleInput" type="text" >
</div>
</template>
<script>
export default {
data() {
return {
inputValue: ''
}
},
watch: {
inputValue(newVal) {
// 輸入發生變化,取消之前的請求
if (this.timer) {
clearTimeout(this.timer);
}
// 發起新的請求
this.timer = setTimeout(() => {
this.getData(newVal);
}, 500);
}
},
methods: {
handleInput(event) {
// 監聽輸入框輸入事件
this.inputValue = event.target.value;
},
async getData(value) {
try {
const res = await fetch(`http://api.example.com/${value}`);
const data = await res.json();
console.log(data);
} catch (error) {
console.log(error);
}
}
}
}
</script>
上面的代碼演示了如何在輸入框輸入過程中,自動調用API獲取數據。其中,輸入框的值改變時,通過watch屬性來監聽輸入框輸入的值,并且在一定時間(這里是500毫秒)內重新發起請求。如果輸入框的值在這個時間內改變,就取消之前的請求,重新發起一個新的請求。
通過上面的兩個示例,我們可以看出,在Vue中處理輸入中斷問題并不困難。無論是監聽輸入框的值,還是調用API獲取數據,都可以通過Vue的watch和methods屬性來實現。
上一篇c語言curl傳json
下一篇c# 返回json 頭文