我正在做道场,我是一个初学者。好吧,我想创建一个使用ajax(dojo.xhrGet)从json文件中恢复的数据创建一个dojo ItemFileReadStore,它可以用来填充组合框。我尝试过它,但没有成功!任何人都可以指导我如何调用json文件,然后使用数据填充组合框!
var _getPlacetypes = function(){
dojo.xhrGet({
url: "place_types.json",
handleAs: "json",
timeout: 5000,
load: function(response, args) {
console.log(response);
},
error: function(error_msg,details) {
PropertyMap.handleError(error_msg, details);
}
});
}
var myStore = new dojo.data.ItemFileReadStore({
jsId:data,
url: "place_types.json",
});
我正在使用这样的东西!这是正确的方式吗?
谢谢
问候!
答案 0 :(得分:2)
首先定义数据的结构。
var myData = {
identifier: 'id',
label: 'My Label',
items: []
};
identifier
必须唯一标识每一行。
您必须使用ItemFileWriteStore(而不是ItemFileReadStore),因为您想使用来自ajax的响应来填充它。
var myStore = new dojo.data.ItemFileWriteStore({data: myData});
假设response
是包含someList
的json,其中包含id
的对象,
在load:
-
load: function(response, args) {
dojo.forEach(response.someList,
function(oneItem, i) {
myStore.newItem({oneItem.id : oneItem.id});
});
myStore.save();
}
这样您就可以从json响应中填充数据存储。
创建ComboBox时,您应该将商店设为myStore
。
var comboBox = new ComboBox({
id: "stateSelect",
store: myStore,
}, "stateSelect");
答案 1 :(得分:0)
为什么不使用JsonRestStore来简化代码?
您可能有理由直接使用xhrGet,但我想如果不是您会发现JsonRestStore是您工作中的重要资产