Angularjs 角形罐';拆分为单独文件时找不到我的控制器

Angularjs 角形罐';拆分为单独文件时找不到我的控制器,angularjs,Angularjs,我在这里看到了一个类似问题的答案: 但是,我仍然无法将控制器拆分为单独的文件。我首先将一个控制器从其余部分拆分到它自己的文件中,但现在没有加载任何控制器 我的js文件正在以正确的顺序加载到index.html文件中,app.js位于我的控制器文件之前 <script src="libraries/jquery/1.11.3/jquery-1.11.3.min.js"></script> <script src="libraries/angular/1

我在这里看到了一个类似问题的答案:

但是,我仍然无法将控制器拆分为单独的文件。我首先将一个控制器从其余部分拆分到它自己的文件中,但现在没有加载任何控制器

我的js文件正在以正确的顺序加载到index.html文件中,app.js位于我的控制器文件之前

    <script src="libraries/jquery/1.11.3/jquery-1.11.3.min.js"></script>
    <script src="libraries/angular/1.4.8/angular.min.js"></script>
    <script src="libraries/angular-ui-router/0.2.14/angular-ui-router.min.js"></script>
    <script src="libraries/angular-scroll/angular-scroll.min.js"></script>
    <script src="libraries/uiboostrap/0.14.3/ui-bootstrap-tpls-0.14.3.min.js"></script>
    <script src="libraries/dirPagination/dirPagination.js"></script>
    <script src="libraries/angular-loading-bar/loading-bar.js"></script>
    <script src="js/app.js"></script>
    <script src="js/app.services.js"></script>
    <script src="js/app.controllers.js"></script>
    <script src="partials/events/StageBarCtrl.js"></script>
我的主控制器文件app.controllers.js如下所示(为简洁起见,省略了内容):

我分离到自己文件中的控制器如下所示:

angular.module('myWebApp.controllers', []).
    controller('StageBarCtrl', function($scope, $window, $location, $http, eventFactory) {

    });

我得到的错误是:“参数'TopNavCtrl'不是函数,未定义”,这是index.html中遇到的第一个控制器。

在单独的文件中声明控制器时,需要使用以下符号:

angular.module('myWebApp.controllers').
controller('StageBarCtrl', function($scope, $window, $location, $http, eventFactory) {
    // ...
});

注意,
angular.module('myWebApp.controllers')
没有将
[]
作为第二个参数(getter)。这意味着检索以前注册的模块
myWebApp.controllers
。但是,
angular.module('myWebApp.controllers',[])
(setter)的意思是“创建新的模块myWebApp.controllers”,它将覆盖以前注册的任何内容。

在单独的文件中声明控制器时,需要使用以下符号:

angular.module('myWebApp.controllers').
controller('StageBarCtrl', function($scope, $window, $location, $http, eventFactory) {
    // ...
});
注意,
angular.module('myWebApp.controllers')
没有将
[]
作为第二个参数(getter)。这意味着检索以前注册的模块
myWebApp.controllers
。然而,
angular.module('myWebApp.controllers',[])
(setter)的意思是“创建新的模块myWebApp.controllers”,它覆盖了以前注册过的任何内容。

您已经非常接近了

在单独的控制器文件中,通过添加“[]”作为第二个参数,每次都覆盖父
myWebApp.controllers
模块。这只会导致注入最后一个单独的控制器。因此,
“参数'TopNavCtrl'不是函数,未定义”
错误

您应该使用setter

angular.module('myWebApp.controllers',[])

在您的情况下,只能在app.controllers.js中使用一次。而getter

angular.module('myWebApp.controllers'))

对于每个单独的控制器。

您非常接近

在单独的控制器文件中,通过添加“[]”作为第二个参数,每次都覆盖父
myWebApp.controllers
模块。这只会导致注入最后一个单独的控制器。因此,
“参数'TopNavCtrl'不是函数,未定义”
错误

您应该使用setter

angular.module('myWebApp.controllers',[])

在您的情况下,只能在app.controllers.js中使用一次。而getter

angular.module('myWebApp.controllers'))


对于每个单独的控制器。

是的,你比我快5秒,angular.module函数在定义模块时可以是setter(带[]),在引用模块定义时可以是getter(不带[])。是的,你比我快5秒,angular.module函数在定义模块时可以是setter(带[]),或引用模块定义时的getter(不带[])。
angular.module('myWebApp.controllers').
controller('StageBarCtrl', function($scope, $window, $location, $http, eventFactory) {
    // ...
});