Are*_*Lin 6 javascript dom focus refs vue.js
当点击span class ="before-click"时,
我希望它隐藏起来,然后输入class ="after-click".
并且显示的输入标签必须是聚焦的!
问题是当我尝试使用$ refs.afterClick访问该DOM并给它.focus()时,意外错误显示.focus()不是函数.
如何解决这个问题?谢谢.
var myApp = new Vue({
el: '#app',
data: {
onEdit: false,
msg: 'Something in here',
},
methods: {
switchAndFocus() {
if(!this.onEdit) {
this.onEdit = true;
this.$refs.afterClick.focus();
}
},
},
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.3/vue.min.js"></script>
<div id="app">
<span class="before-click" @click="switchAndFocus()" v-show="!onEdit">{{msg}}</span>
<input type="text" class="after-click" ref="afterClick" :value="msg" v-show="onEdit">
</div>
Run Code Online (Sandbox Code Playgroud)
tom*_*m_h 18
将焦点事件包装在nextTick中 - 这将推迟焦点事件,直到DOM更新并显示输入.
https://vuejs.org/v2/api/#Vue-nextTick
var myApp = new Vue({
el: '#app',
data: {
onEdit: false,
msg: 'Something in here',
},
methods: {
switchAndFocus() {
if(!this.onEdit) {
this.onEdit = true;
this.$nextTick(function(){
this.$refs.afterClick.focus();
});
}
},
},
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.3/vue.min.js"></script>
<div id="app">
<span class="before-click" @click="switchAndFocus()" v-show="!onEdit">{{msg}}</span>
<input type="text" class="after-click" ref="afterClick" :value="msg" v-show="onEdit">
</div>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9573 次 |
最近记录: |