我有以下代码,效果很好....
<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之前不将存储加载到内存中。我希望在页面加载后填充ComboBox。
使用简单的单行代码将ComboBox绑定到数据源的能力非常棒且简单。有没有人知道在加载时强制存储进入内存的方法?
珍妮
答案 0 :(得分:0)
如果要加载所有数据,只需使用dijit.byId('sampleNameStore').fetch()
:) store.fetch获取带有空查询的项目。
如果你在显示组合框之前这样做,它应该可以工作。
答案 1 :(得分: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);} });