[英]how can dojo.FilteringSelect be configured to match wildcard values?
[英]How can I eliminate lag and fix partial match searches in a dojo FilteringSelect widget?
我在使dijit/form/FilteringSelect
小部件表现自身时遇到麻烦。 我怀疑我的选项组合刚刚起步,但是我似乎无法达到正确的模式。
我的数据源是书名的列表,我希望用户能够通过下拉菜单,选择选项或键入名称的一部分并获得匹配项来使用小部件。 棘手的部分是键入值时需要在两端进行通配符匹配时进行过滤,因为键入的单词很可能是名称中的第二个单词。
我的问题是设置适当的搜索延迟以及搜索发生后继续输入什么内容。 首先,只要您可以继续键入,默认的200ms搜索延迟就可以正常工作,但是当queryExpr设置为*${0}*
这似乎已损坏。 当您继续输入内容时,您将使用当前匹配项的前缀开始,而不仅仅是当前输入的内容。
我要使它完全可用的唯一方法是设置更大的延迟(500毫秒),并希望人们不会犯很多打字错误。 这具有延迟下拉菜单的不良效果。
var books_widget = new FilteringSelect({
placeHolder: "Kitap",
store: book_list_store,
style: 'width: 12em',
searchAttr: "name",
autocomplete: false,
highlightMatch: 'first',
ignoreCase: true,
queryExpr: '*${0}*',
searchDelay: 500
});
books_widget.placeAt(wrapper_node);
在那儿...
...有什么方法可以将searchDelay与鼠标触发的下拉菜单分离,以确保UI没有毫无意义的滞后?
...一种适当的方式来设置设置,以便在输入部分匹配项时,搜索功能不会破坏现有条目,而您可以继续输入扩展模式的字符?
您不必使用搜索延迟。 您得到的行为是因为autoComplete
属性设置为true
。
但是,在配置中,您正在使用autocomplete
,并且应使用大写的“ C”。
我想这可以解决这两个问题,因为您的下拉菜单将不再被延迟,并且当找到部分匹配项时,它将不再覆盖您当前的文本。
searchDelay
属性通常用于消除商店访问(可能还有REST访问)的searchDelay
。 在没有搜索延迟的情况下输入“ hello world”时,将查询商店的每次更改,因此:
h
he
hel
...
hello world
如果使用searchDelay
对其进行反跳,则它将仅在上次更改后500毫秒后访问您的商店,因此,如果键入速度足够快,它将仅使用它来查询"hello world"
。
可以减少延迟的另一件事:提供与输入匹配的有限数量的响应。
使用pageSize:“ 100”作为输入参数将仅给出前100个匹配项,以及“更多选择”的链接。
这确实有助于在键入期间缩小很多选择的性能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.