使用 json file retrived using dojo.xhrGet 在 dijit 中填充组合框



我正在研究道场,我是一个初学者。 好吧,我想使用从 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 是您工作中的重要资产。

最新更新