2012-05-08 47 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是一筆巨大的財富在你的工作