2012-02-15 8 views
0

ハイチャートとノックアウトの組み合わせを使用してチャートにデータを入力しています。knockoutjs highchartsチャートのデータ配列を解析する

私は、クリックイベントでハイチャートに入れなければならない4つの大量のデータ配列を持っています。私は巨大なサイズのためにここではデータ配列が空であることを示しました。 キャッチされない例外TypeError:現在、それはのようなエラーが返されます、私はどのようにareas.metric.dataにアクセスし、自分のチャートにそれを解析しないされ、未定義の

私の質問の「メトリック」プロパティを読み取ることができませんか?ここ

が私の(非)作業フィドルです: http://jsfiddle.net/whiteb0x/BG8Qe/18/

function MetricsViewModel(areas) { 
    var self = this; 
    self.areas = [ // data structure 
     { 
      name: 'Game', 
      metrics: [{name : 'metric1', id : 'usdeur', data : []}, {name : 'metric2', id : 'msft', data : []}] 
     },  
     { 
      name: 'Player', 
      metrics: [{name : 'metric1', id : 'msft', data : []}, {name : 'metric2', id : 'msft', data : []}] 
     }, 
     { 
      name: 'Social', 
      metrics: [{name : 'metric1', id : 'googl', data : [] }, {name : 'metric2', id : 'msft', data : []}] 
     }   
    ]; 


    series: [{ // default series 
     id: 'adbe', 
     data: ADBE 
    }] 
    }, function(chart){ 
     var data = areas.metric.data; // corresponds to my object above ^^^ 

    self.updateChart = function(metric) { 
     var id = this.id, 
      series = chart.get(id); 
     if(!series){ 
      chart.addSeries({ 
       id: id, 
       data: data 
      }); 
     } else {   
      series.remove(); 
     }     
     console.log(metric); 
    } 
}); 
+0

@ Madmanの答えに基づいてあなたのフィドルのフォークがあります。 http://jsfiddle.net/nphyK/ – mg1075

答えて

1

私は私が正しくあなたを理解していないが、あなたのコードに従って、この機能はViewModelにスコープ内で宣言:

function(chart){ 

にアクセスすると、両方の領域の配列にアクセスして、次のような観測可能な配列を観測することができます。

var da ta = self.areas [0] .metrics;

またはいずれかの場合は

self.metrics()

などの観察可能なメトリック列、あなたが悩みを持っているラインで、あなたはViewModelに範囲にあり、あなたはそれで好きなアクセスすることができますこのまたは自己

関連する問題