Javascript 如何预选Dijit.form.FilteringSelect中的第一个元素?

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,它可以从下拉列表的web服务内容中动态加载


我想预选第一个元素。我如何才能做到这一点?

这取决于您的实现

如果首先加载数据,然后创建馈送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));  
});