我在很长一段时间之后重新认识了角度,并且(到目前为止)我发现了两种创建角度服务的方法。最简单的是:
var app = angular.Module("SomeApp", [])
.factory("SomeService", function ($log) {
$log.info("Yea beh beh! Dis hea is a service!")
});
这种以角度创建服务的形式记录在angular.Module.factory中。但是,您还可以看到,在同一页面上,还有另一种使用angular.Module.service创建服务的方式。
阅读这两个描述,我无法理解.service
以外的差异需要您明确使用new
来实例化服务,而.factory
隐式为您执行此操作。我可能在这里错了,因为我无法理解,因为我不知道$get
属性是什么。所以,结束:
$get
财产?.service
和.factory
之间的区别是什么?最后,因为这会让我感到困惑:
angular.Module.{service, factory, controller}
,第二个参数是function
。但是,例如,您已为controller
中的第二个参数放入一个列表,并命名其依赖项。那么为什么类型被视为function
,而不是object
?我的意思是你不会从文档中知道你可以在列表中声明依赖项,除非你已经完成了教程或其他事情。答案 0 :(得分:1)
angular.Module.factory
和angular.Module.service
都是angular.Module.provide
的代理。当您将函数赋予angular.Module.factory
angular时,通过调用函数并使用其返回值作为服务来创建相应的服务。另一方面,当您将函数赋予angular.Module.service
angular时,会将其视为构造函数,并使用new
关键字调用它来创建服务。
因此,使用angular.Module.factory
创建服务如下所示:
app.factory('MySimpleService', function () {
return {
aServiceProperty : 'a property containing a string'
};
});
使用angular.Module.service
创建类似的服务如下所示:
app.service('MyOtherSimpleService', function () {
this.aServiceProperty = 'a property containing a string';
});
答案 1 :(得分:0)