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