案例:
▲注意点解析:
- 为什么使用
this.$nextTick( ) ? 组件的 $nextTick(cb) 方法,会把 cb 回调推迟到下一个 DOM 更新周期之后执行。通俗的理解是:等组件的DOM 更新完成之后,再执行 cb 回调函数。从而能保证 cb 回调函数可以操作到最新的 DOM 元素。因为vue是异步的,所以说执行this.flag=false 指令时,页面还没有渲染,我们要等页面渲染后才能进行 获取Dom元素并且聚焦 - 为什么使用箭头函数?
箭头函数没有自己的this,它的this就是箭头函数外面的this
源代码:
<template>
<div id="app">
<button @click="showInput" v-if="flag">获取</button>
<input type="text" v-else @blur="showbutton" ref="inputRef" />
</div>
</template>
<script>
export default {
name: 'App',
data() {
return {
flag: true
}
},
methods: {
showInput() {
this.flag = false
this.$nextTick(() => {
this.$refs.inputRef.focus()
})
},
showbutton() {
this.flag = true
}
}
}
</script>
<style></style>
|