javascript - 是否可以关注作为“v-if”呈现的元素的子元素的“输入”标签?
问题描述
假设我有以下 vue.js 模板代码:
<div v-if="x===0">
<input ref="text">{{text}}</input>
</div>
其中 x 是一些异步加载的数据。
在评估了“if”语句后,如何专注于该“输入”元素?
解决方案
这种方法行得通吗?在这里,我推迟 this.$refs.textInput.focus()
在下一个 DOM 更新周期之后执行(感谢@Bert提醒),以便 Vue 可以重新渲染组件(即它添加输入并设置 ref)并且我们将有 ref 来调用focus()
函数.
new Vue({
el: "#app",
data: {
x: 1,
text: 'Hey'
},
methods: {
toggle: function(todo){
todo.done = !todo.done
}
},
mounted() {
setInterval(() => {
this.x = 1 - this.x;
}, 1000);
},
watch: {
x: {
handler: function(value) {
this.$nextTick(() => {
this.$refs.textInput && this.$refs.textInput.focus();
});
}
}
}
})
body {
padding: 20px;
}
#app {
background: powderblue;
padding: 20px;
}
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<div id="app">
<div v-if="x===0">
<input ref="textInput" v-model="text">
</div>
</div>
推荐阅读
- elasticsearch - 无法使用休眠搜索中的@Spatial 找到 geo_point 字段
- javascript - 在 Node.js 的微服务框架中使用 ES6 'import' 而不是 'require'
- javascript - Vue.js - Vuex: why is an action dispatched when I import my module stores to a helper file?
- javascript - 如何在按钮单击时加载 XML 数据?
- azure-sqldw - 在 Azure SQL DW 中自动创建统计信息
- xamarin - OVER_QUERY_LIMIT 使用谷歌地方
- ios - 真正的来电者如何访问来电详细信息?喜欢 iPhone 中的来电号码和姓名?
- python-3.x - 使用 Pandas 查找特定小时最小值
- android - 当活动/应用程序处于后台时,如何在 webview(android)的后台运行“youtube.com”?
- java - Selenium (Java) - 根据其他属性获取列表 ID