Ошибка: $controller:ctrlreg Контроллер с именем '{0}' не зарегистрирован

app.js

(function(){
'use strict';

angular
    .module('app', ['ngRoute', 'ngCookies'])
    .config(config)

config.$inject = ['$routeProvider', '$locationProvider'];
function config($routeProvider, $locationProvider){
    $routeProvider
        .when('/', {
            controller: 'HomeController',
            templateUrl: 'home/home.html',
            controllerAs: 'vm'
        })
}
})();

home.controller.js

(function () {
'use strict';

angular
    .module('app')
    .controller('HomeController', HomeController);

HomeController.$inject = ['UserService', '$rootScope'];
function HomeController(UserService, $rootScope) {

    $rootScope.bodylayout ='main_page_que';
    var vm = this;
}
})();

home.js

var app = angular.module('app', []);
app.controller('RedCtrl', function($scope) {
  $scope.OpenRed = function() {
$scope.userRed = !$scope.userRed;
$scope.userBlue = false;
  }
  $scope.HideRed = function() {
$scope.userRed = false;
  }
  $scope.OpenBlue = function() {
$scope.userBlue = !$scope.userBlue;
$scope.userRed = false;
  };
  $scope.HideBlue = function() {
$scope.userBlue = false;
  };
});

home.html

<div ng-controller="RedCtrl">
    <a href="#" ng-click="OpenRed()" hide-red="HideRed()">Show Red</a>
    <div hide-red="HideRed()" class="loginBox" ng-show="userRed"></div>
    <a href="#" ng-click="OpenBlue()" hide-blue="HideBlue()">Show Blue</a>
    <div hide-blue="HideBlue()" class="loginBoxBlue" ng-show="userBlue"></div>
</div>

Index.html

    <html lang="pl" ng-app="app">
<body class="{{bodylayout}}">
<div class="content">
    <div ng-view style="margin:auto"></div>
</div>  
<script src="//code.jquery.com/jquery-3.1.1.min.js"></script>
<script src="//code.angularjs.org/1.6.0/angular.min.js"></script>
<script src="//code.angularjs.org/1.6.0/angular-route.min.js"></script>
<script src="//code.angularjs.org/1.6.0/angular-cookies.min.js"></script>
<script src="home.js"></script>
<script src="app.js"></script>
<script src="authentication.service.js"></script>
<script src="flash.service.js"></script>
<script src="user.service.local-storage.js"></script>
<script src="home/home.controller.js"></script>   
</body>
</html>

Эй, это часть приложения, когда я использую ngRoute и динамически добавляю home.html, но я думаю, что у меня неправильный app.js или home.controller.js, потому что когда я добавляю внешний файл home.js (когда ng-controller=""RedCtrl. Я получаю сообщение об ошибке [$controller:ctrlreg] RedCtrl is not register. У вас есть идеи, почему?Я новичок в Angular, и я думаю, что основная причина заключается в недостатке моих знаний.


person Mat.Now    schedule 28.02.2017    source источник
comment
Объявите свое ng-приложение   -  person Roy Bogado    schedule 28.02.2017
comment
Я объявил ng-app в index.html, который я не вставил в этот вопрос.   -  person Mat.Now    schedule 28.02.2017
comment
См. Справочник по ошибкам AngularJS — $controller:ctrlreg   -  person georgeawg    schedule 28.02.2017


Ответы (1)


Вы перезаписываете app модуль в home.js и получаете ошибку

Использовать

var app = angular.module('app'); //Get previously defined module

вместо

var app = angular.module('app', []); //It declares new module

Вам также необходимо изменить последовательность файлов JavaScript

<script src="app.js"></script>
<script src="home.js"></script>
person Satpal    schedule 28.02.2017