以编程方式填充组合框道场 (1.8) 的最佳方法是什么?

What is the best way to populate the combobox dojo (1.8) programmatically?

本文关键字:最佳 方法 是什么 填充 方式 编程 组合      更新时间:2023-09-26

您好,我正在寻找用数据库中的数据填充组合框的最佳方法。我尝试过这种方式,但我认为在 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
}

您可以使用数组切片方法来克隆数组:

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 一起使用。看看它是如何与 fakeServer of sinon 一起工作的.js在这个 jsFiddle: http://jsfiddle.net/phusick/N8DqG/

假设您案例中的存储是 ItemFileWriteStore,请替换以下代码:

json = new Array();
                for(i in data){
                    item = {
                        name: data[i].nome,
                        id: data[i].id
                    }
                    json[i] = item;
                }
                store .setData(json);

使用商店的新项目 API,如下所示

            for(i in data){
                item = {
                    store.newItem({id: data[i].id, name: data[i].name});
                }
            }

同样,也有用于从商店中删除项目的API。

store.deleteItem(item);