我正在尝试将文本字段集中在 ALT + C 快捷方式(在我的Electron-Vue应用程序中):
Codepen: https://codepen.io/anon/pen/aqrBzq?editors=1010
codepen使用this v-text-field
自定义组件,而this对Github的评论说,该方法应该包含$nextTick
以便集中此组件
<v-text-field
ref="filter"
@keyup.alt.67="focusFilter"
label="type here" >
</v-text-field>
...
methods: {
focusFilter(event){
this.$nextTick(event.target.focus)
}
}
我也试过下面这段代码,尝试用按钮聚焦,但是它可以工作,但是我希望它能用一个键快捷键(例如 ALT + C < / kbd>但更优选 CTRL + F ,但为了举例我不使用保留的快捷方式)
<v-btn @click="focusFilter()">focus</v-btn>
...
methods: {
focusFilter(event){
this.$nextTick(this.$refs.filter.focus)
}
}
答案 0 :(得分:4)
当您在组件上侦听本机事件时,您需要使用.native
修饰符。
所以请改用:
@keyup.native.alt.67="focusFilter"
详细信息:https://vuejs.org/v2/guide/components.html#Binding-Native-Events-to-Components
如果您想在按下alt+c
时关注此输入并且有任何重点,您需要为window
的{{1}}添加事件处理程序。
我创建了一种方法,可以在适当的情况下将其集中在:
keyup
然后,添加一个创建的钩子,并在methods: {
listenForFocusFilterShortcut (event) {
if (event.keyCode === 67 && event.altKey) {
this.$refs.filter.focus()
}
},
}
事件发生时将此回调附加到窗口。
keyup
然后,在删除组件时删除事件侦听器:
created () {
window.addEventListener(
'keyup',
this.listenForFocusFilterShortcut
)
},