Javascript 定义自定义服务的语法
我的服务在这两种情况下都能正常工作,但我不理解这两种语法之间的区别。请开导我。官方文件对此并不十分明确 语法A:Javascript 定义自定义服务的语法,javascript,angularjs,angular-services,Javascript,Angularjs,Angular Services,我的服务在这两种情况下都能正常工作,但我不理解这两种语法之间的区别。请开导我。官方文件对此并不十分明确 语法A: service.factory('Alert',['$rootScope', '$timeout', function($rootScope, $timeout) { //Do stuff }]); 语法B: service.factory('Alert', function($rootScope, $timeout) { //Do stuff }); 它们都提供相同的功
service.factory('Alert',['$rootScope', '$timeout', function($rootScope, $timeout) {
//Do stuff
}]);
语法B:
service.factory('Alert', function($rootScope, $timeout) {
//Do stuff
});
它们都提供相同的功能,但是
语法A
(内联括号表示法)允许通过JavaScript缩略器缩略代码。因为语法A
比语法B
长一点(并且违反了DRY原则),所以最合适的情况,也可能是您希望使用它的唯一情况是当您想要缩小代码时
因为Angular从
控制器构造函数的参数,如果要
缩小[PhoneListCtrl]控制器的JavaScript代码,所有
函数参数也将被缩小,并且依赖性
喷油器将无法正确识别服务
它们都提供相同的功能,但
语法A
(内联括号表示法)允许通过JavaScript缩略器缩略代码。因为语法A
比语法B
长一点(并且违反了DRY原则),所以最合适的情况,也可能是您希望使用它的唯一情况是当您想要缩小代码时
因为Angular从
控制器构造函数的参数,如果要
缩小[PhoneListCtrl]控制器的JavaScript代码,所有
函数参数也将被缩小,并且依赖性
喷油器将无法正确识别服务
我还在文档中找到了第三种语法。它似乎比“Syntax A”(数组表示法)更合适,并且与JavaScript minifier兼容:
var service = angular.module('alertService', []);
var alertServiceFactory = function($rootScope, $timeout) {
//Do stuff
});
alertServiceFactory.$inject = ['$rootScope', '$timeout'];
service.factory('Alert', alertServiceFactory);
这里有更多信息:我还在文档中找到了第三种语法。它似乎比“Syntax A”(数组表示法)更合适,并且与JavaScript minifier兼容:
var service = angular.module('alertService', []);
var alertServiceFactory = function($rootScope, $timeout) {
//Do stuff
});
alertServiceFactory.$inject = ['$rootScope', '$timeout'];
service.factory('Alert', alertServiceFactory);
更多信息请点击此处:查看文档。特别是内联注释小节,我在哪里可以使用DI?第节查看文档。特别是内联注释小节,我在哪里可以使用DI?部分