模块不可用,多个控制器

时间:2017-01-15 21:55:10

标签: angularjs model-view-controller

我已经花了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中的几种方法,它对我没有帮助。先感谢您!

1 个答案:

答案 0 :(得分:2)

这里的关键问题是angular.module('myModuleName', []) 创建了一个新模块。您在client-controller.jslogin-client-controller.js中都这样做。

相反,您应首先确保使用angular.module('loginClientModule',[])创建模块一次,然后在第二个文件中,只需使用angular.module('loginClientModule') 获取现有模块。