Контроллер и службы не загружаются в angularjs

Я интегрировал requirejs с моим угловым приложением. Но при загрузке приложения выдает ошибку 'Argument 'appCtrl' is not a function, got undefined'

Вот мой код контроллера:

define(['Angular'], function (angular) {
   function appCtrl($scope, pathServices) {
     alert('sa');
   }

   function homeCtrl($scope, brandService) {
         console.log('dfd');
   }
});

И вместе с этим выдает ошибку на 'unknown provider pathServices'

Сервисный код:

serviceConfig.js

define([
    'Angular',
    'common/Services/services',
    'current/js/services'
], function(angular, commonServices, loacalStorageServices, currentServices) {
    "use strict";

    var services = {
        commonServices : commonServices,
        currentServices : currentServices,
    };

    var initialize = function (angModule) {
        angular.forEach(services,function(service, name) {
            angModule.service(name, service);
        });
    }

    return {
        initialize: initialize
    };
});

общие/services.js

define(['Angular'], function (angular) {
   var app = angular.module('myApp.services', []);
   app.factory('pathServices', function($http, $q, $rootScope) {
    function pathServices() {
            alert('as');
    }
    return new pathServices();
   });

   app.factory('anotherServices', function($http, $q, $rootScope) {
    function anotherServices() {
            alert('as');
    }
    return new anotherServices();
   });
});

текущий/services.js

define(['Angular'], function(angular) {

    var app = angular.module('myApp.services', []);

    app.factory('brandsService', function() {
        function brandsService() {
            var autoCompleteData = [];
            this.getSource =  function() {
                return autoCompleteData;
            }

            this.setSource = function(states) {
                autoCompleteData = states;
            }
        }
        return new brandsService();
    });
});

in serviceConfig.js I have included 2 service files.. But the problem is, the last current/service.js file overwrites all files.. How can I include multiple service files ?

Я новичок в requirejs. Как я могу использовать функции и службы контроллера с помощью requirejs? Кто-нибудь может помочь?


person Amb    schedule 22.05.2013    source источник


Ответы (1)


Вы должны объявить свои функции в глобальном пространстве имен (окне) или зарегистрировать их в своем модуле с помощью moduleName.controller('controllerName',controllerFn)

Так что либо

define(['Angular'], function (angular) {
 window.appCtrl = function($scope, pathServices) {
   alert('sa');
 }

 window.homeCtrl = function($scope, brandService) {
     console.log('dfd');
  }
});

or

define(['Angular'], function (angular) {
 var module = angular.module('theModuleName');
 module.controller('appCtrl', function($scope, pathServices) {
   alert('sa');
 });

 module.controller('homeCtrl', function($scope, brandService) {
     console.log('dfd');
  }
});

должен исправить эту ошибку (я предпочитаю второй подход).

person joakimbl    schedule 22.05.2013
comment
Вы должны сначала убедиться, что модуль определен, или определить его в этой функции - тогда он тоже будет работать. - person joakimbl; 22.05.2013
comment
функции контроллера работают нормально, но службы все еще не вызываются. Любая идея? как импортировать различные сервисы, как я объяснил выше, в коде с помощью requirejs? - person Amb; 27.05.2013
comment
Трудно сказать, не видя больше вашего кода, как вы определяете свои услуги? Работает ли это, если вы делаете определение службы в том же блоке, где вы определяете свои контроллеры? - person joakimbl; 27.05.2013
comment
Если вы можете воссоздать свою проблему в простом плункере, вам будет легче помочь. - person joakimbl; 27.05.2013
comment
Если вы создадите плункер, я посмотрю - person joakimbl; 28.05.2013
comment
давайте продолжим это обсуждение в чате - person joakimbl; 28.05.2013