AngularJS控制器文件的分离?

时间:2016-08-17 06:32:34

标签: angularjs

运行我的应用时遇到错误:参数' AppCtrl'不是一个函数,未定义 - 我相信它与控制器文件的分离有关?

好的,所以我在我的第一个文件中:app.js this:

angular.module('zerochili', [
    'ionic',
    'zerochili.controllers',
    'zerochili.services',
    'zerochili.directives'
])

然后我有一些不同的控制器文件 - 让我们把文件拿到AppCtrl是 - 这看起来如下:

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

.controller('AppCtrl', ['$scope', '$ionicModal', '$timeout', function ($scope, $ionicModal, $timeout){


}])

另一个文件fx如下:

angular.module('zerochili.controllers', [])
.controller('LoginCtrl', ['$scope', '$state', '$ionicPopup', '$timeout', function($scope, $state, $ionicPopup, $timeout){

}]);

我做错了什么?似乎很难弄明白吗?

2 个答案:

答案 0 :(得分:1)

您可以将app.js视为定义模块的部分。控制器文件应该添加到模块(没有“,[]”,因为这会创建模块)。

您可能应该在控制器中执行此操作

angular.module('zerochili')
.controller('AppCtrl', etc.

所以,从app.js中删除这些:'zerochili.controllers','zerochili.services','zerochili.directives',并将你的控制器,服务和指令添加到'zerochili'模块中,如上所述。

如果你想保留,例如'zerochili.controllers',请确保你没有两次创建这个模块,即有两次angular.module('zerochili.controllers',[])。

答案 1 :(得分:1)

这只是因为您正在使用[]

创建新的模块

你可以放在app.js的末尾

angular.module('zerochili.controllers', []);
angular.module('zerochili.directives', []);
angular.module('zerochili.services', []);

然后像这样使用它:

angular.module('zerochili.controllers')...