dijit.form.FilteringSelect接近我的需要。我已经尝试了很多方法来做我想做的事,但作为一个dijit初学者,我从来不知道我是否正朝着正确的方向前进。
当我开始输入FilteringSelect时,我只看到以我键入的内容开头的选项。就像value + "*"
上的查询一样
我需要的是看到任何我在任何地方打字的选项。就像对"*" + value + "*"
所以如果有“Apple”,“Banana”和“Orange”,我输入“e”,我应该看到“Apple”和“Orange”。如果可能,强调搜索字符串:“Appl e ”,“Orang e ”
我认为我需要一些聪明的数据存储,但我去的任何地方看起来都像死路一条。我错过了什么,或者我应该以完全不同的方式做到这一点?
答案 0 :(得分:16)
您想使用queryExpr
属性:
var f = new dijit.form.FilteringSelect({
...
queryExpr: "*${0}*",
...
}, node);
注意$ {0}之前和之后的*。
答案 1 :(得分:4)
喂!您需要将queryExpr =“ $ {0} ”添加到filteringselect组件。
默认情况下,它是$ {0} *,这意味着它会搜索以您键入的内容开头的字符串。
作为其他人的提示,在JSP中,我不得不更改查询expr。 to queryExpr =“ \ $ {0} ”。
答案 2 :(得分:0)
在我们的项目中,我们使用dojo.data.util.filter
覆盖patternToRegExp
方法的补丁解决了这个问题。
答案 3 :(得分:0)
经过大量的时间尝试,我可以让它运行,马达小费是正确的,但错过*之前和之后。正确的queryStr(在JSP中)是'*\${0}*'
答案 4 :(得分:-1)
在$
,{
和}
之前添加反斜杠以解决未捕获的错误:dijit._WidgetsInTemplateMixin template 0 in html