用于定义自定义服务的语法
Syntax to define a custom service
我的服务在这两种情况下都按预期工作,但我不明白这两种语法之间的区别。请开导我。官方文档对这一点不是很明确。
语法 A :
service.factory('Alert',['$rootScope', '$timeout', function($rootScope, $timeout) {
//Do stuff
}]);
语法 B :
service.factory('Alert', function($rootScope, $timeout) {
//Do stuff
});
它们都提供相同的功能,但Syntax A
(内联括号表示法)允许通过JavaScript缩小器缩小代码。由于Syntax A
比Syntax 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
相关文章:
- 如何使用WCF服务和javascript表单post上传.doc文件
- 监视函数从服务返回不起作用,但作用域函数起作用
- 通过Magento的网络服务检索运费
- 铬:“;未捕获的语法错误:意外的标记:"
- jQuery语法添加了var
- Javascript未捕获语法错误意外的标识符错误
- 为什么忽略了eval()代码中的语法错误
- 难以访问的JS环境中的语法错误
- '控制器为'语法或服务
- AngularJs 2: 如何调试服务调用?(ES6 语法)
- 用于定义自定义服务的语法
- 角度连接 2 控制器通过 1 具有 ES6 语法的服务
- Grunt服务,如何在更改文件中的代码后禁用语法代码检查
- AngularJS-通过服务从指令更新控制器数据(this.model语法)
- AngularJS工厂服务中存在语法错误
- 用ES6语法注册AngularJS服务
- 使用ControllerAs语法绑定服务变量,不带$scope
- 用于创建服务和控制器的Angular语法
- 将服务注入控制器es6语法
- AngularJS - 使用控制器作为语法和服务属性的 DRY 双向数据绑定