Angularjs: не удается динамически генерировать диаграммы на основе директив c3

Я пытаюсь создать диаграммы c3 динамически, используя директивы диаграммы c3. Директива диаграммы С3 работает нормально. Однако создание динамического графика при нажатии кнопки не работает. Кто-нибудь может подсказать, где я не так? Пожалуйста, найдите мой поршень на http://plnkr.co/edit/wWJx3zU3Sm1cN9ZCtvoh?p=preview

Я собираю свою директиву c3, как показано ниже:

 $scope[chartName] = {

    data: {
        x: 'x',
        columns: [["x","2014-02-01","2014-03-01","2014-04-01","2014-05-01","2014-06-01","2014-07-01","2014-08-01","2014-09-01"],["LH",".00",".00",".00",".00",".00",".00",".00","31.50"],["DW","42.57",".00",".00","321.14","1070.06","6501.42","144337.85","329159.85"],["PS",".00","82.22","-2.87","179.60","835.85","6925.52","479631.24","1386751.16"]],
        type: 'line'
    },
    axis: {
        x: {
            type: "timeseries",
            tick: {
                format: "%d-%m-%Y"
            }
        }
    },
    subchart: {
        show: true
    }

};

   var  template = ' <div class="col"> <p class="graphtitle">' + dashletterName + ' </p> <c3-simple id = "' + chartName + '" config="' + chartName + '"></c3-simple> </div>';
     angular.element(document.body).append($compile(template)($scope));    

1 ответ

Решение

Я скачал тебе Plnkr и попробовал это в браузере. Вот ошибка из консоли Chrome:

ReferenceError: $compile is not defined

Это означает, что AngularJS не может использовать $compile, потому что он не внедряется в ваш контроллер. Это должно быть сделано в controllers.js следующим образом:

// I have added $compile
controller('DemoCtrl', ['$scope', 'c3SimpleService', '$compile', function ($scope, c3SimpleService, $compile)
{
  // rest of the controller code
}

Я тоже исправил твой плнкр. Надеюсь, поможет:)

Другие вопросы по тегам