我从json文件获取数据,现在我想将它添加到filteringselect。我尝试下面的代码,但它没有添加,请帮助我
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"},
...........................
答案 0 :(得分:2)
可以根据ajax调用动态设置FilteringSelect的存储。
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'}
]
};
以上示例实际上将替换商店。如果,来自ajax调用的新数据需要附加到现有选项,那么
//str is the existing store of FilteringSelect field above
dojo.forEach(result.data, function(optionSet, index){
str.add(optionSet);
});
请注意: 'addOption'仅适用于Select。不适用于FilteringSelect。
答案 1 :(得分: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]);
}