1

我正在做dojo,我是初学者。好吧,我想创建一个使用 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",
        });

我正在使用这样的东西!这是正确的方法吗?

谢谢

问候 !

4

2 回答 2

2

首先定义数据的结构。

var myData = { identifier: 'id', label: 'My Label', items: [] };

identifier必须唯一标识每一行。

您必须使用 ItemFileWriteStore(而不是 ItemFileReadStore),因为您想使用来自 ajax 的响应来填充它。

var myStore = new dojo.data.ItemFileWriteStore({data: myData});

假设这response是一个包含 的 jsonsomeList对象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");
于 2012-05-08T06:48:56.253 回答
0

你为什么不使用JsonRestStore来简化你的代码呢?

您可能有理由直接使用 xhrGet,但我认为如果没有,您会发现 JsonRestStore 是您工作中的重要资产

于 2012-05-09T05:36:22.267 回答