В angular внутренние инжекторы для всех элементов управления прицелом инициализируются приложением. Вам удалось отсоединить ваше приложение от определения вашего контроллера, поэтому angular не знал, как внедрить части, необходимые для использования объекта $scope.
Опция 1
Итак, чтобы заставить это работать, вам нужно либо определить приложение/модуль, который передается в пространство, где определен элемент управления:
define(['angular'], function (angular) {
'use strict';
return angular.module('TP.controllers', []);
});
управление календарем:
define([
"jquery",
"controllers",
"jqueryui",
"full_calendar",
"calendar",
],
function($, controllers) {
return controllers
.controller('calendarCtrl', ['$scope', function($scope) {
....
В этом случае вам нужно будет включить каждый отдельный контроллер в приложение верхнего уровня, например:
define([
'angular',
'controllers',
'calendarCtrl',
'full_calendar',
'calendar'
], function (angular, controllers) {
'use strict';
return angular.module('TP', ['TP.controllers', 'ui.calendar']);
});
Что в некоторой степени противоречит цели использования AMD.
Вариант 2
Лучшим вариантом является определение вашего календаря как собственного модуля, а затем определение его как дочернего элемента контроллеров. Это поддерживает цепочку угловых инъекций, поэтому область действия имеет правильный контекст при инициализации действий календаря.
Определение корня контроллера:
define(['angular', 'calendarCtrl'], function (angular) {
'use strict';
return angular.module('TP.controllers', ['calendarCtrl']);
});
Определение контроллера календаря:
define([
"jquery",
"angular",
"jqueryui",
"full_calendar",
"calendar",
],
function($, angular) {
return angular.module('calendarCtrl', [])
.controller('calendarCtrl', ['$scope', function($scope) {
...
Рабочий плункер этой версии на http://plnkr.co/edit/Xo41pqEdmB9uCUsEEzHe?p=preview а>.
person
Paul Ryan
schedule
01.06.2013