Error: $controller:ctrlreg The controller with the name '{0}' is not registered
Error: $controller:ctrlreg The controller with the name '{0}' is not registered
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 的新手,我认为主要原因是我缺乏知识。
您正在覆盖 home.js 中的 app
模块,因此出现错误
使用
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>
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 的新手,我认为主要原因是我缺乏知识。
您正在覆盖 home.js 中的 app
模块,因此出现错误
使用
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>