2

我正在从 json 文件中获取数据,现在我想将其添加到过滤选择中。我尝试了下面的代码,但没有添加,请帮助我

 HTML code==
        <select data-dojo-type="dijit/form/FilteringSelect"
                id="education"></select>

        Javascrip code==
            request.get("/json/education.json", {
                            handleAs: "json"
                        }).then(function(data) {

                            var node = dijit.byId('education');
                            dojo.forEach(data.items, function(desc, index){     
                                node.addOption({
                                     label: desc.name,
                                     value: desc.value 
                                     });
                            });

                        },
                        function(error){});


    Json code

    {
        "title":"Education",
        "items":[
    {"name":"Select Education","value":"0"},
    {"name":"B.A", "value":"1"},
    {"name":"B.Sc" ,"value":"2"},
    ...........................
4

2 回答 2

2

FilteringSelect 的存储可以根据 ajax 调用动态设置。

var str = new dojo.store.Memory(optionData);
dijit.byId('widgetId').set('store',str);

但是,您的 json 数据必须是这样的:-

var optionData={
                data:[
                   {id:'aaaaaa',name:'aaaaaa'},
                   {id:'bbbbbb',name:'bbbbbb'}
                  ]
               };

上面的示例实际上将替换 store。如果需要将来自 ajax 调用的新数据附加到现有选项,则

 //str is the existing store of FilteringSelect field above
 dojo.forEach(result.data, function(optionSet, index){     
                str.add(optionSet);
 });

请注意: “addOption”仅适用于 Select。不适用于 FilteringSelect。

于 2014-03-06T09:15:18.233 回答
0

我希望这有帮助:

dijit.byId("select_id").store.root.add(dojo.create("option",{ value: "some", innerHTML: "label of option"}));

要删除现有元素,只需这样做:

var size = dijit.byId("select_id").store.root.removeChild.length;    
for(var i=size; i>=0; i--){   dijit.byId("select_id").store.root.removeChild(dijit.byId("select_id").store.root.children[size-1]);
}
于 2015-02-05T23:24:51.690 回答