我写了一个简单的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的新手,错误来自路由配置。 谢谢你的帮助
答案 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';
};
});