我在下面有以下代码,它将创建一个FilteringSelect并设置第一个选定项:
// Store initialization:
var jsonStore = custom.store.JsonRest({ ... });
var memoryStore = dojo.store.Memory();
var myStore = dojo.store.Cache( jsonStore, memoryStore);
var dataStore = custom.store.MyObjStore({ objectStore: myStore, ... });
// FilteringSelect initialization:
var fsel = new dijit.form.FilteringSelect({
id: 'fsel',
searchAttr: 'id',
store: dataStore
});
// Setting the first item on FilteringSelect, retrieved from store objects
fsel.store.fetch({ query: {id:""},
onComplete: function (items, request) {
var val = "";
if (items.length>0) val = items[0].id;
fsel.set('value', val);
}
});
第一个问题是,如果是
items[0].id = 0
,FilteringSelect 上没有设置此项。fsel.store.fetch({ ... })
查询服务器,没问题。问题是检索到的项目没有保存在内存中,或者它们是,但在下一个事件中没有被 FilteringSelect 检索。我的意思是,当我第一次单击 FilteringSelect 的下拉菜单时,另一个查询被发送到服务器以获取项目,随后它们从内存中获取。
谁能帮我解决这两个问题?
注意:我使用的是 Dojo 版本 1.7.2 (27913)。