当我感到单个控制器变得太大时,我现在正尝试使用多个控制器。但是,导航到/signup时由于某种原因找不到我的UserController。我收到此错误:

错误:[ng:areq]参数'UserController'不是一个函数,未定义

app.js

var app = angular.module('myApp', [
    'ui.router',
    'ngResource',
    'myApp.controllers',
]);

angular.module('myApp.controllers', []);

app.config(function($stateProvider, $urlRouterProvider, $httpProvider) {

  $stateProvider
    .state('signup', {
      url: '/signup',
      templateUrl: 'views/signup.html',
      controller: "UserController"
    });

});


我按以下顺序包含.js文件:

<script src="angular/controllers/mainCtrl.js"></script> //binded to body tag
<script src="angular/controllers/userCtrl.js"></script> //set in signup state
<script src="angular/app.js"></script>


UserController

angular.module('myApp.controllers').controller('UserController', function () {

  //do stuff

});


我想念什么?

最佳答案

使自己更轻松,并创建更简洁的代码。

var app = angular.module('myApp', [
    'ui.router',
    'ngResource',
    'myApp.controllers',
])
.config(function($stateProvider) {
  $stateProvider
    .state('signup', {
      url: '/signup',
      templateUrl: 'views/signup.html',
      controller: "UserController"
    });
});


您没有使用$ urlRoutProvider和$ httpProvider,为什么要注入它们?

到目前为止,Angular模块一无是处。除了在您的应用中加载第三方方代码和在测试过程中进行模拟之外。除此之外,没有理由在您的应用程序中使用多个模块。

要创建您的UserController,请执行

app.controller('UserController', function ($scope) {

  //do stuff

});

10-02 14:02