Как включить скрипты в мой контроллер AngularJS?

У меня возникла проблема, и это может быть связано с тем, что я не полностью понимаю 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 очень ограничена, и я хотел бы узнать что-то новое.

Не могу воспроизвести проблему. Ваш код работает в этом ДЕМО на PLNKR.

georgeawg 12.03.2019 23:58
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
92
1

Ответы 1

В вашем примере я не увидел, что вы:

  1. Включен скрипт angularjs.
  2. Написал директиву ng-app.

Вот полный рабочий пример от здесь.

Он использует другой тип диаграмм, но принципы те же:

<!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-файл, вы получите следующий вывод: output.

Но обратите внимание, что лучше разделить каждую директиву на собственный код (и разметку директивы).

Привет, так что я сделал это вторым способом и первым способом. Оба раза получаю Highcharts is not defined. Есть идеи, почему?

Andy Nguyen 12.03.2019 23:23

Я отредактировал ответ и прикрепил результат своего кода. Вы можете просто скопировать и вставить его в html-файл и посмотреть, получите ли вы диаграммы на изображении?

RtmY 13.03.2019 08:24

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