Javascript 如何预选Dijit.form.FilteringSelect中的第一个元素?
我有Dijit.form.FilteringSelect,它可以从下拉列表的web服务内容中动态加载Javascript 如何预选Dijit.form.FilteringSelect中的第一个元素?,javascript,dojo,Javascript,Dojo,我有Dijit.form.FilteringSelect,它可以从下拉列表的web服务内容中动态加载 我想预选第一个元素。我如何才能做到这一点?这取决于您的实现 如果首先加载数据,然后创建馈送dijit/form/FilteringSelect的dojo/store/Memory,那么: // sync only for dojo/store/Memory var store = filteringSelect1.store; filteringSelect1.set("value", stor
我想预选第一个元素。我如何才能做到这一点?这取决于您的实现 如果首先加载数据,然后创建馈送dijit/form/FilteringSelect的
dojo/store/Memory
,那么:
// sync only for dojo/store/Memory
var store = filteringSelect1.store;
filteringSelect1.set("value", store.getIdentity(store.data[0]));
更健壮的同步或异步方式是查询存储:
when(store.query(function(item, index, items) {
return index == 0;
}), function(results) {
filteringSelect2.set("value", store.getIdentity(results[0]));
});
请参见JSFIDLE上的两个实际示例:
如果您的filteringSelect
由dojo/store/JsonRest
备份,则您的REST服务必须支持通过索引进行查询(除了通过id
进行查询外):
请参阅JSFIDLE上更复杂的示例(通过sinon.js模拟此类REST服务):您是以声明方式还是以编程方式创建筛选选择?我是以编程方式创建筛选选择的。对于我来说,集合('value',…)不起作用。我所做的是:设置('item',item)
restStore.query({ index: 0 }).then(function(item) {
filteringSelect1.set("value", restStore.getIdentity(item));
});