2016-04-03 4 views
0

私はcal-HeatMapで遊んでいて、静的なjson-dataが走っているいくつかの例があります。今は、RESTサービスを使用してjson-dataを動的にロードしたいと考えています。残念ながら、これはRESTサービスからデータを消費するときに期待どおりに機能しません。cal-HeatMapの問題とRESTサービスのデータ

これは、CAL-ヒートマップ(動作しませんRESTfulなバージョン)のコードです:

var heatData = dojo.xhr.get({ 
    url:"http://localhost:8080/webapp/xfull2.nsf/services.xsp/heatdata", 
    handleAs:"json" 
}); 

var cal = new CalHeatMap(); 
cal.init(
{ 
    itemSelector:"#cal-heatmap", 
    range: 10, 
    start: new Date(2016, 3,4,1), 
    data: heatData 
} 
); 

REST呼び出しが発射するようで、JSONの結果を返します:

オン
{ 
    "1459742400":1, 
    "1459749600":1, 
    "1459753200":1, 
    "1459756800":1, 
    "1459767600":1 
} 

このエラーが表示されます。 TypeError:a is undefined cal-hea .... min.js(行8、列30282)(cal-heatmap.min.js)

JSONをREST呼び出しから.json-fileとして保存し、このファイルでcal-HeatMapをテストしました。その場合、正常に動作します。これは私のコードの静的なバージョンです:

var cal = new CalHeatMap(); 
cal.init(
{ 
    itemSelector:"#cal-heatmap", 
    range: 10, 
    start: new Date(2016, 3,4,1), 
    data: "js/cal-heatmap/sample-json/testdata.json" 
} 
); 

はtestdata.jsonファイルには、(上記と同じ)次のようになります。

{ 
    "1459742400":1, 
    "1459749600":1, 
    "1459753200":1, 
    "1459756800":1, 
    "1459767600":1 
} 

結果は(OKです)次のようになります。 enter image description here

私はここで何が欠けていますか?どのようなヘルプやhointが評価されます。

答えて

0

まあ、私は最終的に私のコードで問題を発見しました。質問に対する答えはむしろ明らかです。私はxhr.getで非同期REST呼び出しを使用するので、コールバックでHeatMapオブジェクトを作成する必要があります。それ以外の場合は、HeatMapオブジェクトの作成中にデータがまだ使用できません。

正しいコードは次のようになります。

var heatData = dojo.xhr.get({ 
    url:"http://localhost:8080/webapp/xfull2.nsf/services.xsp/heatdata", 
    handleAs:"json", 
    load: function(data) { 
     var cal = new CalHeatMap(); 
     cal.init({ 
       itemSelector:"#cal-heatmap", 
       range: 10, 
       start: new Date(2016, 3,4,1), 
       data: data 
       }); 
    } 
}) 
関連する問題