2014-10-26 2 views
0

Невозможно заставить несколько контроллеров работать с Grunt. Однако Grunt не проблема, поскольку простое объединение файлов вручную также не работает. Я пытаюсь создать приложение с Grunt и отдельными контроллерами с одним файлом для создания приложения с течением времени.Ошибка AngularJS с несколькими контроллерами и Grunt

Контроллеры находятся в отдельных файлах, которые объединены и минимизированы с помощью Grunt. Это работает, и модуль выглядит правильно, прежде чем он будет уменьшен. Неопределенный пример представлен в файле script.js.

Я получаю ошибку ниже: Ошибка: Ошибка: unpr Неизвестный Provider

'use strict'; 
angular.module('OntarioDarts', []); 

// Source: app/Modules/Events/EventController.js 
angular.module('OntarioDarts').controller('EventCtrl', function ($scope) { 
    $scope.Events = [ 
     { 
      'Id': 1, 
      'Name': '12th Annual Frank Hanlon Tournament', 
      'Date': 20150117, 
      'Time': 1000, 
      'Image': 'images/Events/FrankHanlon20150128.jpg', 
      'Flyer': '' 
     }, 
     { 
      'Id': 2, 
      'Name': '1st Annual Ken Cadieux Memorial Christmas Tournament', 
      'Date': 20141227, 
      'Time': 1000, 
      'Image': 'images/Events/KenCadieux20141227.jpg', 
      'Flyer': '' 

     }, 
     { 
      'Id': 3, 
      'Name': '8th Annual Presidents Cup Tournament', 
      'Date': 20150313, 
      'Time': 2000, 
      'Image': 'images/Events/PresidentsCup20150314.jpg', 
      'Flyer': '' 
     } 
    ]; 
    $scope.ImageSettings = [{ 'Height': 200, 'Width': 155 }]; 
}); 

// Source: app/Modules/Leagues/LeagueController.js 
angular.module('OntarioDarts').controller('LeagueCtrl', function ($scope) { 
    $scope.Leagues = [ 
     { 'Id': 1, 'Name': 'Dixie Summer Dart League' }, 
     { 'Id': 2, 'Name': 'Etobicoke Pub Dart League' }, 
     { 'Id': 3, 'Name': 'Region of Peel Dart League'} 
    ]; 
}); 

// Source: app/Modules/Schedules/ScheduleController.js 
angular.module('OntarioDarts').controller('ScheduleCtrl', function ($scope) { 
    $scope.Schedules = [ 
     { "Id": 1, "Name": "November 1, 2014" }, 
     { "Id": 2, "Name": "November 5, 2014" } 
    ]; 
}); 

// Source: app/Modules/Teams/TeamController.js 
angular.module('OntarioDarts').controller('TeamCtrl', function ($scope) { 
    $scope.Teams = [ 
     { 'Id': 1, 'Name': 'Team 1' }, 
     { 'Id': 2, 'Name': 'Team 2' } 
    ]; 
}); 

//# sourceMappingURL=OntarioDarts.js.map 

Plunker

+0

Когда вы говорите, что это не работает, когда «объединение файлов вручную», включает ли это включение? Обычно вам нужно использовать встроенные аннотации угловых или использовать мини-инструмент, который угловат для инъекции зависимости для работы. – aidanok

+0

Извините, проблема заключалась в том, что на контроллере не было обозначений массива (см. Ответ ниже). Когда у меня было это в одном файле, он работал правильно (аналогично учебнику), поэтому я ошибочно, хотя это произошло из-за разделения, затем объединения. –

ответ

1

Я только что узнал в plunker, что имя файла является script.js вместо scripts.js , это неверно ссылается на html.

Пожалуйста, учитывайте это, когда вы Минимизировать

После это самый безопасный способ, чтобы написать для минификация

angular.module('OntarioDarts').controller('EventCtrl', ['$scope', function ($scope) { 
    //controller code goes here 
}]); 

вы должны использовать нотацию массива для функции контроллера, чтобы понять, $ объем.

['$scope', function ($scope) { 
    //controller code goes here 
}] 
+0

К сожалению, скрипты были опечатками от интерфейса plunker, где я использовал встроенный файл вместо моего собственного имени, как это делает мой код. Нотация массива исправила мою проблему. Спасибо. –

+0

Я рад, я мог бы помочь. – PSK

Смежные вопросы