2012-05-08 48 views
1

我正在使用dojo,我是一个开始。好吧,我想创建一个使用Ajax(dojo.xhrGet)从json文件中获取的数据创建一个dojo ItemFileReadStore,它可以用来填充组合框。我尝试过,但没有成功!任何人都可以请指导我通过如何调用json文件,然后使用数据填充组合框!使用json文件在dijit中填充组合框使用dojo.xhrGet

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", 
     }); 

我正在使用类似的东西!这是正确的方式吗?

谢谢

问候!

回答

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响应数据存储。

在创建组合框时,您应该将商店作为myStore

var comboBox = new ComboBox({ 
     id: "stateSelect", 
     store: myStore, 
    }, "stateSelect"); 
+0

嘿感谢了很多! – amyth91

+0

如果答案有用,请投票/接受。 – Dandy

0

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

你可能有一个原因,直接使用xhrGet但我想,如果不是,你会发现JsonRestStore是一笔巨大的财富在你的工作