0

我有以下代码很好用......

<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>

它工作得非常好,但在实际选择 ComboBox 之前它不会填充 ComboBox,因为 dojo 的行为是在访问 ComboBox 之前不将存储加载到内存中。我希望在页面加载后填充 ComboBoxes。

使用简单的单线将 ComboBox 绑定到数据源的能力非常棒且简单。有谁知道在加载时强制存储进入内存的方法?

珍妮

4

2 回答 2

0

dijit.byId('sampleNameStore').fetch()如果您希望加载所有数据,只需使用 :) store.fetch 获取带有空查询的项目。如果在显示组合框之前这样做,它应该可以工作。

于 2012-07-09T15:24:04.110 回答
0

我经常为组合框使用克隆的内存库,以允许对键标签进行更多控制,例如这里将标题映射到名称

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);} });
于 2012-07-11T09:31:27.457 回答