我已经花了2天时间并没有找到错误:
错误:$ controller:ctrlreg未注册具有此名称的控制器。控制器名称为' clientController'不是 注册的
我有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 :(得分:2)
这里的关键问题是angular.module('myModuleName', [])
创建了一个新模块。您在client-controller.js
和login-client-controller.js
中都这样做。
相反,您应首先确保使用angular.module('loginClientModule',[])
创建模块一次,然后在第二个文件中,只需使用angular.module('loginClientModule')
获取现有模块。