Как сообщить Angular директиве, что значения области видимости изменились?

Я пытаюсь создать угловую директиву, которая будет рисовать гистограмму d3. Я не могу точно определить, куда добавить код рисования D3, чтобы диаграмма перерисовывалась каждый раз при изменении значений диаграммы (значения привязаны к изолированной области видимости). Я пытался поместить этот код в функцию ссылки, но это отображает диаграмму только один раз. Он не вызывается каждый раз, когда изменяется область действия. Смотрите код ниже или полный jsFiddle здесь.

function barchart() {    
    var directive = {
        link: link,
        restrict: 'A',
        scope: {
            values: '='
        }
    };
    return directive;

    function link(scope, element) {
        // Draw D3 chart here
        element.html(scope.values);
    };
}

1 ответ

Решение

Вы можете следить за изменениями:

function link(scope, element){
   scope.$watch("values", function(newVal, oldVal){
      // do whatever you need to regenerate the graph
   });
}
Другие вопросы по тегам