以编程方式填充组合框 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 服务器支持,您也可以直接将 JsonRestComboBox 一起使用。在这个 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) 的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

在Dojo Dijit中填充的依赖组合框?

向文本框添加标签(以编程方式)

Dojo:dojo onblur 事件

如何设置 Dojo 组合框的宽度

Dojo 1.8 图表编程教程报错

Python Selenium从两个组合框中获取数据