dojo.read or dojo.addOnLoad

ajaxjsonさ、読んで、それをdata APIにしてgridに渡して描写する。

下のコードでどうもItemFileReadStoreをインスタンス化するときにReferenceTypeエラーが出る。右往左往するが治らない。

debugger;でステップ実行してもわからない。

試しに、dojo.readyの外で
var chart = new ItemFileReadStore( );
をしてみた。

ItemFileReadStoreはundefinedって怒られた。
あっ、じゃ
dojo.data.ItemFileReadStoreでやったら、それでもundefinedってなった。

あれっ、俺はItemFileReadStoreのインスタンス化中に問題発生、
つまりパラメタに原因があるとばっかり思ってたが、
単純にItemFileReadStoreがundefinedだってさ。
となると、その文が実行される時点でItemFileReadStoreが
読み込まれてないだばべさ。

これが問題解決に直結する糸口だすた。
だったら、エラーで最初からreferenceError to ItemFileReadStor
eみたいなことを言えよな!
だからweb系はとっつきにくい。まぁ、俺が知識不足だからこんな
やりにくさを感じるんだろう。くそっ、知識を増やそう!

ま、っとにかく
dojoが読み込まれてないってので、ピンときて
dojo.readyをaddOnLoadに変えてみた。そしたら一発よ!

ちなみにdojo.readyのままで実行してdebugger consoleから
new dojo.data.ItemFileReadStore()ってやったらインスタンス
されたよ!加えて、オブジェクト補完もしてくれる。こまったらdebugger consoleで色々試すことを覚えた。debugger console=F12 =firebug, chrome.

以下、下は修正前、その下が修正後。thanks

dojo.ready(function (){
	//var chart = new ItemFileReadStore( );	
	btn1 = dojo.byId("btn1");
	dojo.connect(btn1, "onclick", null, function(ev) {
	dojo.xhrGet({
	    url:"../../../../tournament_view.json",
	    handleAs: "json",
	    load: function(data){
	      console.log("res=", data);
	      var itemdata = data.chart.rows;
	      
	      var data = { items: [{ name:'Mexico City', type:'city', population:'19 million', timezone:'-6 UTC'}]};
	      //var chart = new dojo.data.ItemFileReadStore();
	      //var chart = new ItemFileReadStore( {data :{ items : itemdata }});
	      var grid = dijit.byId("myDataGrid");
	      grid.setStore(chart);
	      alert("called");
	    },
	    error: function(error) {
	      console.warn(new Error().stack);
	    }
	  });
	});




});
<script type="text/javascript">
dojo.addOnLoad(function (){
		
	btn1 = dojo.byId("btn1");
	dojo.connect(btn1, "onclick", null, function(ev) {
	dojo.xhrGet({
	    url:"../../../../tournament_view.json",
	    handleAs: "json",
	    load: function(data){
	      console.log("res=", data);
	      var itemdata = data.chart.rows;
	      debugger;
	      var data = { items: [{ name:'Mexico City', type:'city', population:'19 million', timezone:'-6 UTC'}]};
	      var chart = new dojo.data.ItemFileReadStore({ data : {} });
	      //var chart = new dojo.data.ItemFileReadStore();
	      //var chart = new ItemFileReadStore( {data :{ items : itemdata }});
	      var grid = dijit.byId("myDataGrid");
	      grid.setStore(chart);
	      alert("called");
	    },
	    error: function(error) {
	      console.warn(new Error().stack);
	    }
	  });
	});

});
  

</script>