2017-01-15 3 views
0

я провел 2 дня уже и не найти ошибку:модуль не доступен, несколько контроллеров

Error: $controller:ctrlreg A controller with this name is not registered. The controller with the name 'clientController' is not registered.

У меня есть 2 контроллера и app.js:

js/app.js 
js/controllers/client-controller.js 
js/controllers/login-client-controller.js 

ClientController:

angular.module('loginClientModule',[]) 
    .controller('clientController', 
['$scope', '$http', '$state', function($scope, $http, $state) {....//some code }]) 

LoginController:

angular.module('loginClientModule',[]) 
    .controller('loginClientController', 
['$scope', '$http', '$state', function($scope, $http, $state) {....//some code }]) 

В app.js:

const app = angular.module('clientproviderApp', [ 
    'ui.router', 
    'loginClientModule' 
]) 
app.config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider) { 
     $urlRouterProvider.otherwise('/clients') 
     $stateProvider 
      .state('about', { 
       url : '/about', 
       template : '<h2>About stuff</h2>' 
      }) 
      .state('loginClient', { 
       url:'/loginClient', 
       templateUrl:'views/login.html', 
       controller: 'loginClientController' 
      }) 
      .state('clients', { 
       url: '/clients', 
       templateUrl: 'views/clients.html', 
       controller: 'clientController' 
      }) 
    }]) 

Индекс HTML:

<!DOCTYPE html> 
<html> 
<head> 
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.0-rc.2/angular.min.js"></script> 
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.3.2/angular-ui-router.min.js"> 
    </script> 
    <script type="text/javascript" src="js/app.js"></script>  
    <script type="text/javascript" src="js/controllers/client-controller.js"></script> 
    <script type="text/javascript" src="js/controllers/login-client-controller.js"></script> 
</head> 
<body ng-app="clientproviderApp"> 
    <div ui-view></div> 
</body> 
</html> 

Что я делаю неправильно? Я попробовал несколько методов из stackoverflow, и это не помогло мне. Заранее спасибо!

+0

Что делает 'angular.module ('loginClientModule', [])' do? Что делает 'angular.module ('loginClientModule')' do? Прочтите документацию: https://docs.angularjs.org/api/ng/function/angular.module. –

ответ

2

Основная проблема заключается в том, что angular.module('myModuleName', [])создает новый модуль. Вы делаете это как в client-controller.js, так и в login-client-controller.js.

Вместо этого, вы должны убедиться, что первый, вы создаете модуль один раз angular.module('loginClientModule',[]), а затем во втором файле, просто использовать angular.module('loginClientModule') для получить существующий модуль.

+1

Ваше последнее предложение не нужно: модули могут быть определены в любом порядке. –

+0

спасибо !! Я думаю, что моя проблема заключалась в том, что я определил, что модуль зависит от (loginClientModule) после загрузки модуля приложения. Еще раз спасибо! – ProgIsMetal

+1

@JBNizet Спасибо за исправление, я удалил эту строку. – GregL

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