以下に、 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 のドロップダウンを初めてクリックすると、アイテムを取得するために別のクエリがサーバーに送信され、次の時間はメモリから取得されます。
これら2つの問題を解決するのを手伝ってくれる人はいますか?
注: Dojo バージョン 1.7.2 (27913) を使用しています。