У меня возникла проблема, и это может быть связано с тем, что я не полностью понимаю AngularJS. Что я пытаюсь сделать, так это добавить несколько JS-скриптов в свой HTML.
<head>
<script src = "https://code.highcharts.com/highcharts.js"></script>
<script src = "https://code.highcharts.com/gantt/modules/gantt.js"></script>
<script src = "https://code.highcharts.com/gantt/modules/exporting.js"></script>
<head>
<body>
<div id = "plandat"></div>
</body>
Проблема в том, что я использую AngularJS и не знаю, как интегрировать оба JS вместе. Вот так выглядит мой контроллер.
angular.module('analyticsCtrl', ['rzModule', 'daterangepicker'])
.controller('planDatController', function($templateCache, $scope, $http, $interval, $filter, uiGridGroupingConstants ){
Highcharts.ganttChart('plandat', {
title: {
text: 'Plan Dat'
},
series: [{
name: 'Project 1',
data: [{
id: 's',
name: 'Start prototype',
start: Date.UTC(2014, 10, 18),
end: Date.UTC(2014, 10, 20)
}, {
id: 'b',
name: 'Develop',
start: Date.UTC(2014, 10, 20),
end: Date.UTC(2014, 10, 25),
dependency: 's'
}, {
id: 'a',
name: 'Run acceptance tests',
start: Date.UTC(2014, 10, 23),
end: Date.UTC(2014, 10, 26)
}, {
name: 'Test prototype',
start: Date.UTC(2014, 10, 27),
end: Date.UTC(2014, 10, 29),
dependency: ['a', 'b']
}]
}]
});
})
В заключение, кажется, что AngularJS запускается первым и не читает скрипт highcharts перед настройкой диаграммы Ганта highcharts, которую я пытаюсь отобразить. Спасибо заранее. Моя работа с интерфейсом/javascript очень ограничена, и я хотел бы узнать что-то новое.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


В вашем примере я не увидел, что вы:
Вот полный рабочий пример от здесь.
Он использует другой тип диаграмм, но принципы те же:
<!DOCTYPE html>
<html ng-app = "myModule">
<head>
<meta charset = "utf-8" />
<title> Highcharts directive demo </title>
<script type = "text/javascript" src = "https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js"></script>
<script type = "text/javascript" src = "https://code.highcharts.com/highcharts.js"></script>
</head>
<body ng-controller = "myController">
<hc-chart options = "chartOptions">Placeholder for generic chart</hc-chart>
<hc-pie-chart title = "Browser usage" data = "pieData">Placeholder for pie chart</hc-pie-chart>
<script>
angular.module('myModule', [])
// Directive for generic chart, pass in chart options
.directive('hcChart', function () {
return {
restrict: 'E',
template: '<div></div>',
scope: {
options: '='
},
link: function (scope, element) {
Highcharts.chart(element[0], scope.options);
}
};
})
// Directive for pie charts, pass in title and data only
.directive('hcPieChart', function () {
return {
restrict: 'E',
template: '<div></div>',
scope: {
title: '@',
data: '='
},
link: function (scope, element) {
Highcharts.chart(element[0], {
chart: {
type: 'pie'
},
title: {
text: scope.title
},
plotOptions: {
pie: {
allowPointSelect: true,
cursor: 'pointer',
dataLabels: {
enabled: true,
format: '<b>{point.name}</b>: {point.percentage:.1f} %'
}
}
},
series: [{
data: scope.data
}]
});
}
};
})
.controller('myController', function ($scope) {
// Sample options for first chart
$scope.chartOptions = {
title: {
text: 'Temperature data'
},
xAxis: {
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
},
series: [{
data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
}]
};
// Sample data for pie chart
$scope.pieData = [{
name: "Microsoft Internet Explorer",
y: 56.33
}, {
name: "Chrome",
y: 24.03,
sliced: true,
selected: true
}, {
name: "Firefox",
y: 10.38
}, {
name: "Safari",
y: 4.77
}, {
name: "Opera",
y: 0.91
}, {
name: "Proprietary or Undetectable",
y: 0.2
}]
});
</script>
</body>
</html>
Если вы просто скопируете и вставите приведенный выше код в HTML-файл, вы получите следующий вывод:
.
Но обратите внимание, что лучше разделить каждую директиву на собственный код (и разметку директивы).
Привет, так что я сделал это вторым способом и первым способом. Оба раза получаю Highcharts is not defined. Есть идеи, почему?
Я отредактировал ответ и прикрепил результат своего кода. Вы можете просто скопировать и вставить его в html-файл и посмотреть, получите ли вы диаграммы на изображении?
Не могу воспроизвести проблему. Ваш код работает в этом ДЕМО на PLNKR.