我正在尝试设置一个由用户输入驱动的QSelect,以实现";自动完成";行为官方文档中有几个例子,它们使用了@filter回调。
我目前有两个问题:
- 每当我在输入字段外单击时,输入文本就会丢失,弹出窗口也会消失
- 如果我点击输入,当前文本仍然存在,但弹出窗口会被隐藏,直到我再次点击它
对于后一个问题,一种解决方法是强制弹出窗口在单击时显示:
<q-select
ref="input"
...
@click.native.prevent="onClick"
>
...
onClick(){
if( this.searchFilter.length > 0){
this.$refs.input.showPopup()
}
}
然而,不便之处在于弹出窗口在再次显示之前仍会很快消失一小段时间。我也尝试过使用@click.native.stop
而不是@click.native.prevent
,但没有成功。
至于第1个问题,我甚至还没有找到解决办法。
这是一个相关的问题,尽管弹出窗口的消失在他的案件中是一种通缉行为。
我用一支基本的钢笔来说明这个问题。尝试在输入上单击或在输入的外部单击相同的高度。
诀窍是使用@click.capture.native
,然后通过event.stopImmediatePropagation()
有条件地停止回调函数内的传播