以编程方式填充组合框 dojo (1.8) 的最佳方法是啥?
Posted
技术标签:
【中文标题】以编程方式填充组合框 dojo (1.8) 的最佳方法是啥?【英文标题】:What is the best way to populate the combobox dojo (1.8) programmatically?以编程方式填充组合框 dojo (1.8) 的最佳方法是什么? 【发布时间】:2012-09-03 20:42:01 【问题描述】:您好,我已经找到了用我的数据库中的数据填充组合框的最佳方法。我尝试过这种方式,但我认为在 javascript 中有更好的方法。
谢谢大家
var albumStore = new JsonRest(target:"/album", idAttribute:"id");
var store = new Memory();
albumStore.query('').then(function(data)
json = new Array();
for(i in data)
item =
name: data[i].nome,
id: data[i].id
json[i] = item;
store .setData(json);
)
props =
required : true,
missingMessage: 'campo obrigatório',
store: store
【问题讨论】:
【参考方案1】:您可以使用Array slice method 到clone arrays:
var restStore = new JsonRest( target: "/album/", idProperty: "Key" );
var memoryStore = new Memory( idProperty: "Key" );
restStore.query().then(function(response)
memoryStore.setData(response.slice(0));
);
请注意,如果您的 REST 服务器支持,您也可以直接将 JsonRest
与 ComboBox
一起使用。在这个 jsFiddle 上查看它如何与 fakeServer 的 sinon.js 一起工作:http://jsfiddle.net/phusick/N8DqG/
【讨论】:
【参考方案2】:假设您的案例中的 store 是 ItemFileWriteStore,请替换以下代码:
json = new Array();
for(i in data)
item =
name: data[i].nome,
id: data[i].id
json[i] = item;
store .setData(json);
使用 store 的 newItem API 如下所示
for(i in data)
item =
store.newItem(id: data[i].id, name: data[i].name);
同样,还有用于从商店中删除商品的 API。
store.deleteItem(item);
【讨论】:
以上是关于以编程方式填充组合框 dojo (1.8) 的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章