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
}
Я тоже исправил твой плнкр. Надеюсь, поможет:)