Angular ui.router无法断言控制器,未定义

时间:2016-05-03 09:44:22

标签: angularjs angular-ui-router

我写了一个简单的Angular应用程序,对于我的路由我使用了ui.router,但是我收到了这个错误:

  

参数' loginController'不是一个功能,未定义

modules.js:

(function () {
    'use strict';
    angular.module('account', ['ui.router']);
    angular.module('app', ['account', 'ui.router']);
})();

routeConfig.js:

(function () {
    'use strict';
    var account = angular.module('account');
    account.config(function ($stateProvider, $urlRouterProvider) {
        // For any unmatched url
        $urlRouterProvider.otherwise('/login');
        $stateProvider
            .state('login', {
                url: '/login',
                templateUrl: '/app/components/account/login.html',
                controller: 'loginController'
            });
    });
})();

account.js:

(function () {
    'use strict';
    var account = angular.module('account');
    account.controller('loginController', ['$scope', loginController]);
    function loginController($scope) {
        $scope.Title = 'login';
    };
});

的index.html:

<!DOCTYPE html>
<html ng-app="app">
<head>
    <title></title>
</head>
<body>   
    <div ui-view>
    </div>

    <script src="Scripts/jquery-1.9.1.js"></script>
    <script src="Scripts/angular.js"></script>
    <script src="Scripts/angular-ui-router.js"></script>
    <script src="app/modules.js"></script>
    <script src="app/routeConfig.js"></script>
    <script src="app/components/account/account.js"></script>
</body>
</html>

的login.html:

<h4>{{Title}}</h4>

我是ui.router的新手,错误来自路由配置。 谢谢你的帮助

2 个答案:

答案 0 :(得分:0)

当你使用注射时,那不是这样做的。

如果您的功能与account.controller分开,请使用$inject

account.controller('loginController', loginController);

...

loginController.$inject = ['$scope'];
function loginController($scope) {
...
}

直接注入仅在身体位于account.controller内时使用。

account.controller('loginController', ['$scope', function($scope) {
...
}]);

此外,您的account.js文件似乎包含无效的IIFE - (function(){...});而不是(function(){...})();

答案 1 :(得分:0)

我认为您需要从控制器声明中删除$ scope,如下所示:

(function () {
    'use strict';
    var account = angular.module('account');
    account.controller('loginController', loginController);
    function loginController($scope) {
        $scope.Title = 'login';
    };
});