我正在使用dojo.form.FilteringSelect
作为谷歌般的建议者。根据输入的字符串,我通过AJAX获取值列表并将它们放入小部件的商店。此过程在每keyUp
后启动。我遇到的问题是,在AJAX响应到来之前,dropdownlist会自动打开,尝试在其存储中找到(由旧值填充)键入的字符串。我想禁用此行为并在获得结果后自己调用openDropDown()
。这样做有什么优雅的方式吗?类似的东西:
var fs = new dojo.form.FilteringSelect({
automaticDropDown: false // I am looking for a property like this one
});
答案 0 :(得分:1)
我真的不认为有办法轻松做到这一点。你所做的(据我所知)是你绑定一个keyUp
事件处理程序并手动修改存储。
最好的办法是创建自己的商店(或者使用dojo/store/JsonRest
)并覆盖query()
功能。此函数实际上负责为您提供与查询匹配的数据子集。如果要在执行查询时更改从商店返回的数据,则应在那里进行修改。
这种方法的好处是您不需要定义自己的事件处理程序并开始自己从外部过滤商店,因为它已经以另一种方式实现。下拉列表仅在执行query()
函数后打开,因此您对执行顺序没有问题。