2014-11-12 2 views
0

dojo 데이터 격자에 콤보 상자 구성 요소가 있습니다.JSON 데이터를 반환하는 URL을 호출하여 dijit.form.ComboBox를 populdate하는 방법은 무엇입니까?

var tacStore = {items : []}; Tac

그리고 단추를 클릭하면 아래 코드를 사용하여 콤보 상자를 채우려 고합니다.

 function loadTimeZones() { 

     dojo.xhrGet({ 
       //url: "/AAORPCAdapterServicesWeb/RPCAdapter/httprpc/TimeZoneService/getTimeZones", 
       url: "/AAORPCAdapterServicesWeb/RPCAdapter/httprpc/DeliverableService/getAllTacs", 
       handleAs:"json", 
       load: createTimeZoneStore, 
       error: function(error,ioargs){ 
        console.log(error); 
       } 
      }); 
     return false; 
    } 

     function createTimeZoneStore(response) { 
     console.log("createTimeZoneStore::response:: "+response); 
     if (response.result != null) { 
      var timezone = []; 
      for(var resultCounter=0; resultCounter<response.result.length;resultCounter++) 
      { 
       timezone[resultCounter] = {}; 
       timezone[resultCounter]['name']=response.result[resultCounter]; 
       console.log("createTimeZoneStore::response.result[resultCounter]:: "+response.result[resultCounter]); 
      } 
      console.log("createTimeZoneStore::tacStore::tacs: "+tacStore); 
      tacstore= new dojo.data.ItemFileWriteStore({data:{items:timezone}}); 
     } 
     return false; 
    } 

응답 받고 있습니다. 그러나 값은 콤보 박스에 표시되지 않습니다. 그리고 콤보 상자를 클릭하면 this.fetch와 같은 오류가 함수가 아닙니다.

답변

1

먼저, dojo/data/api API 인 ItemFileWriteStore를 사용하고 있습니다. 콤보 상자는 최신 dojo/store/api API를 사용합니다 (구체적으로 dojo/store/Memory 구현을 사용할 수 있음).

var myStore = new Memory({data: timezone}); 

또한 저장소를 만들지 만 ComboBox에는 연결하지 않습니다. 당신이 프로그래밍 방식으로 콤보를 만드는 경우 콤보가 이미 (중, 프로그램, 또는 data-dojo-id와 마크 업을 사용)를 만든 경우,

var myComboBox = new ComboBox({store: myStore}); 
myComboBox.placeAt(/* wherever you like */); 
myComboBox.startup(); 

을 사용하여이 코드에서

myComboBox.set('store', myStore); 
/* you may need to startup the ComboBox after this - but I am not sure */ 
myComboBox.startup(); 
+0

를 사용, 그것은 새로운 콤보를 만드는 것, 하지만 내 경우에는 콤보 상자가 이미 만들어져 있습니다. 다른 방법으로 상점을 설정해야합니다. –

+0

내 대답은 이미 두 경우 모두 관련이 있습니다. 어쨌든, 어떻게 만들어 졌습니까? 마크 업 또는 프로그래밍 방식으로? – Elad

관련 문제