AngularJS控制器和服务创建

时间:2014-10-07 19:21:43

标签: angularjs service controller

我正在使用以下文件处理新的Angular项目:

//app.js
var mainApp = angular.module('mainApp', ['serviceA', 'serviceB', "ctrlA", 'ctrlB']);

//ctrlA.js
var ctlA = angular.module('serviceA', []);
ctlA.controller('menuController', ['$scope', 'serviceA', function($scope, serviceA) {
  // ...
}]);

有没有理由不这样做?

//ctrlB.js
angular.module('mainApp')
.controller('ctrlB', ['$scope', 'serviceA', function($scope, serviceA) {
  // ...
}]);

2 个答案:

答案 0 :(得分:1)

Zenorbi提到的是绝对正确的。但是,考虑添加此信息以得出更好的答案。

您可以将应用程序模块化为多个细分,以便于理解。细分可以是 以不同的方式完成。

基于服务类型 - 这对小型应用程序很有用

var mainApp = angular.module('mainApp', [
    'app.controllers',      // Controllers
    'app.directives',       // Directives
    'app.filters',          // Filters
    'app.services'          // Services
]);

模块的示例实现。

var ctrls = angular.module('app.controllers');
ctrls.controller('menuController', ['$scope', 'serviceA', function($scope, serviceA) {
  // ...
}]);

根据每个模块的用途。例如,您可以将图表相关类分隔为单独的模块,并将其与主代码库隔离。这将允许其他人进行并行编程,因为该模块可以独立于父模块执行。

答案 1 :(得分:0)

这两种实现都是有效的,但模块系统是为了确保将更大的应用程序分离到模块中。如果serviceA,serviceB,ctrlA和ctrlB密切相关,您可以将它们捆绑到一个模块中。如果您想在其他地方提供服务,可以创建一个名为mainApp.services的模块。

由您决定如何构建代码,但模块存在是有原因的。要有多个东西"在他们中间。