我正在研究道场,我是一个初学者。 好吧,我想使用从 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",
});
我正在使用这样的东西! 这是正确的方法吗?
谢谢
问候!
首先定义数据的结构。
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 响应填充数据存储。
创建组合框时,您应该将商店指定为myStore
。
var comboBox = new ComboBox({
id: "stateSelect",
store: myStore,
}, "stateSelect");
为什么不使用 JsonRestStore 来简化你的代码呢?
您可能有直接使用 xhrGet 的理由,但我认为如果没有,您会发现 JsonRestStore 是您工作中的重要资产。