Highchart-ng не отображается внутри директивы

У меня есть директива, содержащая highchart-ng, и мне нужно обновить данные серии внутри директивы из моей службы, чтобы получить данные.

У меня это работает без службы - в основном это работает https://jsfiddle.net/w657bcdp/

Однако, если я обновлю серию внутри своего сервиса, это не сработает. Отладчик показывает загружаемые данные серии диаграмм, но не отображает их.

...
var defer = $q.defer();
defer.resolve(DashbboardSrv.loadStats());

defer.promise.then(function(resp){


    ...

    var data = [
                    [Date.UTC(1970,  9, 18), 0   ],
                    [Date.UTC(1970,  9, 26), 0.2 ],
                    [Date.UTC(1970, 11,  1), 0.47],
                    [Date.UTC(1970, 11, 11), 0.55],
                    [Date.UTC(1970, 11, 25), 1.38],
                    [Date.UTC(1971,  0,  8), 1.38],
                    [Date.UTC(1971,  0, 15), 1.38],
                    [Date.UTC(1971,  1,  1), 1.38],
                    [Date.UTC(1971,  1,  8), 1.48],
                    [Date.UTC(1971,  1, 21), 1.5 ],
                    [Date.UTC(1971,  2, 12), 1.89],
                    [Date.UTC(1971,  2, 25), 2.0 ],
                    [Date.UTC(1971,  3,  4), 1.94],
                    [Date.UTC(1971,  3,  9), 1.91],
                    [Date.UTC(1971,  3, 13), 1.75],
                    [Date.UTC(1971,  3, 19), 1.6 ],
                    [Date.UTC(1971,  4, 25), 0.6 ],
                    [Date.UTC(1971,  4, 31), 0.35],
                    [Date.UTC(1971,  5,  7), 0   ]
                 ];


                scope.chartConfig.series = [{
                        type: 'area',
                        name : 'votes',
                        data: data,
                        tooltip: {
                            valueDecimals: 2
                        }
                      }]
}
, function (err) {
    console.trace(err.message);
})

Любая идея, почему это происходит?


person Adetiloye Philip Kehinde    schedule 09.04.2016    source источник
comment
Как поменять серию?   -  person kabaehr    schedule 10.04.2016
comment
@kabaehr - scope.chartConfig.series = [... точно так же, как фрагмент в моем коде   -  person Adetiloye Philip Kehinde    schedule 10.04.2016
comment
Может быть, тайм-аут, как вы сделали в jsfiddle, сработает   -  person kabaehr    schedule 10.04.2016
comment
тоже не работал...   -  person Adetiloye Philip Kehinde    schedule 10.04.2016


Ответы (1)


По-видимому, я нашел проблему в моей функции ссылки на директиву. Я завернул приведенный выше код в функцию внутри самой функции ссылки и, вероятно, вызывал проблемы в AngularJS.

Решение состоит в том, чтобы создать функцию с областью действия:

...
link: {
        pre: function(scope, element, attrs) {                  

                scope.chartConfig = {...}

                scope.loadStats();     //loadStats() wont' work.


               scope.loadStats = function(){...}
       ...
      }
person Adetiloye Philip Kehinde    schedule 10.04.2016