v-if和v-show最大的区别就是关于DOM元素加载方式的不同
v-if显示隐藏是将整个DOM元素删除或者添加,如果隐藏,文档将加载不到DOM元素
v-show则是简单切换元素的css属性,等同于css属性中的display,有v-show的元素会始终渲染并保持在DOM中,即DOM元素一直存在
这次碰到的错误是在弹窗上添加了v-if,所以想让弹窗中的input元素获取焦点,但是一直失败,后来才明白,v-if隐藏时,文档中并没有DOM元素,弹窗不存在,所以加载不到弹窗中的内容,故将v-if改成了v-show,文档可以查询到v-show的DOM结构
但是即使将v-if改成v-show,隐藏的弹窗中的input元素依然不能直接使用
this.$refs.input.focus()获取,
后来想到,加载时可以让焦点获取延时生效,所以使用setTimeout

这样即可成功在弹窗出现时,获取弹窗中input元素的焦点
本文详细对比了Vue.js中v-if与v-show指令的区别,重点在于它们对DOM的操作方式不同。v-if通过增删DOM实现显示隐藏,而v-show则仅改变元素的CSS属性。文章还介绍了如何解决因v-if导致的弹窗输入框无法自动聚焦的问题。

4175

被折叠的 条评论
为什么被折叠?



