用于定义自定义服务的语法

Syntax to define a custom service

本文关键字:语法 服务 自定义 定义 用于      更新时间:2023-09-26

我的服务在这两种情况下都按预期工作,但我不明白这两种语法之间的区别。请开导我。官方文档对这一点不是很明确。

语法 A :

service.factory('Alert',['$rootScope', '$timeout', function($rootScope, $timeout) {
  //Do stuff
}]);

语法 B :

service.factory('Alert', function($rootScope, $timeout) {
 //Do stuff 
});

它们都提供相同的功能,但Syntax A(内联括号表示法)允许通过JavaScript缩小器缩小代码。由于Syntax ASyntax B长一点(并且违反了 DRY 原则),因此最合适且可能唯一想要使用它的情况是当您想要缩小代码时。

由于 Angular 从 控制器构造函数的参数(如果要 缩小 PhoneListCtrl 控制器的 JavaScript 代码,其所有代码 函数参数也将缩小,并且依赖关系 注入器将无法正确识别服务。

有关更多信息,请参阅此页面(关于缩小的说明

我还在文档中找到了第三种语法。它似乎比"语法A"(数组符号)更合适,并且与JavaScript简化器兼容:

var service = angular.module('alertService', []);
var alertServiceFactory = function($rootScope, $timeout) {
 //Do stuff 
});
alertServiceFactory.$inject = ['$rootScope', '$timeout'];
service.factory('Alert', alertServiceFactory);

更多信息在这里 : http://docs.angularjs.org/guide/dev_guide.services.managing_dependencies