繁体   English   中英

Vue - 使用 refs 聚焦元素目标

[英]Vue - using refs to focus an element target

单击 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(); } }, }, });
 <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>

将焦点事件包装在 nextTick 中 - 这将推迟焦点事件,直到 DOM 更新并显示输入。

https://v2.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(); }); } }, }, });
 <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>

当单击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(); } }, }, });
 <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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM