2012-07-09 57 views
0

我有以下代碼的偉大工程....強制儲存到內存(道場1.7)

<div dojoType="dojo.data.ItemFileReadStore" url="[% c.uri_for('/') -%]sample_name" jsId="sampleNameStore" class="invisible"></div> 

<select data-dojo-type="dijit.form.ComboBox" id="sample_name" searchAttr="label" store="sampleNameStore" name="sample_name" class="selectionNav tableData"></select> 

它的工作原理非常好,但直到組合框在實際選擇,由於它不填充組合框到dojo的行爲,直到組合框被訪問時才加載存儲到內存中。我很想讓組合框在頁面加載後填充。

使用簡單的單線程將ComboBox綁定到數據源的功能非常簡單。有沒有人知道一種方法來迫使商店加載到內存中?

珍妮

回答

0

只是一個空的查詢,如果您要加載的所有數據取了dijit.byId('sampleNameStore').fetch() :) store.fetch項目。 如果你在顯示組合框之前這樣做,它應該工作。

0

我經常使用克隆MemoryStore的爲組合框,以便在關鍵標籤更多的控制,例如這裏映射標題

隨着

var store = ?; 
var combobox = ?; 
var data=[]; 
function clone(items) { 
    items.forEach(function(item) { 
     data.push({name: store.getValue(item, "title"), id: store.getValue(item, 'id')}); 
    }); 
    combobox.set("store", new memorystore({ 
    data:data 
    })); 
} 

要麼

store.on("load", function() { clone(store._arrayOfAllItems) }); 

store.fetch({ onComplete: function(items) {clone(items);} }); 
+0

它是怎麼回事?有問題,或者你有EM排序? – mschr 2012-07-27 16:57:13