knockoutjs highcharts разбирает массивы данных на графике - PullRequest
0 голосов
/ 16 февраля 2012

Я использую комбинацию highcharts и knockoutjs для подачи данных в мой график.

У меня есть 4 массивных массива данных, которые нужно вводить в мой high-график при событии щелчка.Я показал пустые массивы данных из-за их огромного размера.В настоящее время он возвращает ошибку типа: Uncaught TypeError: Невозможно прочитать свойство 'metric' из неопределенного

Мой вопрос: как мне получить доступ к Area.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);
    }
});  

1 Ответ

1 голос
/ 20 февраля 2012

Я не уверен, что правильно вас понимаю, но согласно вашему коду эта функция объявлена ​​в области видимости ViewModel:

function(chart){

так что вы можете получить доступ к массиву областей и к массиву наблюдаемых метрик, например:

var data = self.areas [0] .metrics;

или наблюдаемый массив метрик, такой как

self.metrics ()

в любом случае, на линии, где у вас возникли проблемы, вы находитесь в области видимости ViewModel и можете получить к ней доступ, если хотите, с помощью this или self

...