如果你使用Vue開發(fā)過一段時(shí)間,你可能會(huì)注意到其中一個(gè)奇怪的問題,就是在一些情況下,focus()
方法并不能正確地定位到元素上。
比如下面這個(gè)例子:
<template>
<input ref="input" v-model="inputValue"/>
<button @click="focusInput">聚焦輸入框</button>
</template>
<script>
export default {
data() {
return {
inputValue: '',
};
},
methods: {
focusInput() {
this.$refs.input.focus();
},
},
};
</script>
這段代碼中,我們有一個(gè)輸入框和一個(gè)按鈕,當(dāng)點(diǎn)擊按鈕時(shí),我們調(diào)用focusInput
方法來讓輸入框聚焦。但是,如果你運(yùn)行這段代碼,你會(huì)發(fā)現(xiàn)在某些情況下,比如在IE瀏覽器中,聚焦并不會(huì)生效。
這是因?yàn)樵谀承┣闆r下,focus()
方法并不會(huì)正常工作。解決這個(gè)問題的方法是,將focus()
方法放在Vue的$nextTick
方法中:
focusInput() {
this.$nextTick(() => {
this.$refs.input.focus();
});
},
這樣就可以解決聚焦無效的問題了。