Highcharts, говорящий undefined, не является функцией при попытке добавить новую диаграмму - программирование
Подтвердить что ты не робот

Highcharts, говорящий undefined, не является функцией при попытке добавить новую диаграмму

Я пытаюсь поместить highcharts в мое приложение angular. Я получаю данные из Google Таблиц и возвращаю объект обещания из звонка в Google. Затем я вызываю метод Highcharts.Chart() с моим объектом options.

Я получаю ошибку ниже при совершении вызова. Я попытался выяснить, что происходит, но в настоящее время я потерялся. У меня есть прототип, что я не использую angular, и диаграмма отлично работает. Когда я иду и добавляю новую строку Highcharts.Chart(options), я получаю ошибку ниже. Я удаляю эту строку, ошибка исчезает.

Любые мысли/помощь будут замечательными!

Ошибка:

TypeError: undefined is not a function
    at Object.Chart.init (/highcharts.src.js:11014:4)
    at Object.Chart (/highcharts.src.js:10937:12)
    at data.then.$scope.sheetdata (/js/controllers/controlChartCtrl.js:11:17)
    at wrappedCallback (/angularjs/1.2.6/angular.js:10905:81)
    at /angularjs/1.2.6/angular.js:10991:26
    at Scope.$eval (/angularjs/1.2.6/angular.js:11906:28)
    at Scope.$digest (/angularjs/1.2.6/angular.js:11734:31)
    at Scope.$delegate.__proto__.$digest (<anonymous>:844:31)
    at /angularjs/1.2.6/angular.js:11945:26
    at completeOutstandingRequest (/angularjs/1.2.6/angular.js:4098:10) 

Частичный:

Features:
<div id="feature"></div>

Контроллер:

angular.module('controlChartCtrl', []).
  controller('ControlChartCtrl', ['$scope', 'GoogleService', function($scope, GoogleService) {
    var data = GoogleService.getData();
    $scope.helloworld = "hello world!";
    data.then(function (data) {
        // create charts here
        var options = getOptionsForChart('Feature', 'feature', data);
        var chart = new Highcharts.Chart(options);
    }, function (error) {
        $scope.sheetdata = error;
    });

    var getOptionsForChart = function (title, div, data) {
        return {
            chart: {
                renderTo: div,
                type: 'line'
            },
            title: {
                text: title + ' Control Chart'
            },
            xAxis: {
                title: {
                    text: 'End Dates'
                },
                categories: data.endDates
            },
            yAxis: {
                title: {
                    text: 'Lead Time'
                }
            },
            series: [{
                name: 'Lead Time',
                data: data.leadTimes
            }]
        };
    } 

}]);
4b9b3361

Ответ 1

Я решил проблему. Решение состоит в следующем.

В Highcharts для корректной работы jQuery. Когда я добавил файл jquery.js над файлом highcharts.js, приложение angular начало работать правильно.

Спасибо за отзыв!

Ответ 2

Highcharts не требует работы JQuery (текущий ответ неверен), однако сначала нужно сначала загрузить библиотеку "автономной структуры":

define([
    'vnd/highcharts/standalone-framework',
    'vnd/highcharts/highcharts',
], function(){
    ...
}

См. @Sebastian jsfiddle для демонстрации: http://jsfiddle.net/highcharts/aEuGP/

Ответ 3

У меня была такая же проблема. Я также решил это, поставив файл jquery.js выше highcharts.js и/или highstock.js