总是在 Quasar Select 上首先过滤选择
Always first filtered selected on Quasar Select
我正在使用 Quasar Framework 并使用带有过滤器的 Q-Select。
我希望第一个筛选选项始终已被标记,因为如果我按回车键,第一个将被选中。
如果过滤的选项长度 >0,有一个选项可以实现这一点,即在过滤方法中设置模型值。
filterFn (val, update, abort) {
update(() => {
const needle = val.toLowerCase()
this.options = stringOptions.filter(v => v.toLowerCase().indexOf(needle) > -1)
if(this.options.length>0 && this.model!=''){
this.model = this.options[0];
}
})
}
经过一些研究,我发现了如何以通用方式实现这一点。
filterFn 接收到的函数更新的第二个参数是 QSelect 本身的实例。
因此,我们可以使用
ref.setOptionIndex(-1);
ref.moveOptionSelection(1, true);
无论多选与否,都将焦点放在第一个过滤的元素上。
最终代码类似于
filterFn(val, update) {
update(
() => {
const needle = val.toLocaleLowerCase();
this.selectOptions = this.qSelectOptions.filter(v => v.toLocaleLowerCase().indexOf(needle) > -1);
},
ref => {
ref.setOptionIndex(-1);
ref.moveOptionSelection(1, true);
});
}
我正在使用 Quasar Framework 并使用带有过滤器的 Q-Select。 我希望第一个筛选选项始终已被标记,因为如果我按回车键,第一个将被选中。
如果过滤的选项长度 >0,有一个选项可以实现这一点,即在过滤方法中设置模型值。
filterFn (val, update, abort) {
update(() => {
const needle = val.toLowerCase()
this.options = stringOptions.filter(v => v.toLowerCase().indexOf(needle) > -1)
if(this.options.length>0 && this.model!=''){
this.model = this.options[0];
}
})
}
经过一些研究,我发现了如何以通用方式实现这一点。 filterFn 接收到的函数更新的第二个参数是 QSelect 本身的实例。
因此,我们可以使用
ref.setOptionIndex(-1);
ref.moveOptionSelection(1, true);
无论多选与否,都将焦点放在第一个过滤的元素上。
最终代码类似于
filterFn(val, update) {
update(
() => {
const needle = val.toLocaleLowerCase();
this.selectOptions = this.qSelectOptions.filter(v => v.toLocaleLowerCase().indexOf(needle) > -1);
},
ref => {
ref.setOptionIndex(-1);
ref.moveOptionSelection(1, true);
});
}