Javascript AngularJS提供程序函数
实际上,我正在查看injector.js的Javascript AngularJS提供程序函数,javascript,angularjs,Javascript,Angularjs,实际上,我正在查看injector.js的provider函数,似乎所有的服务[常量、值、工厂、服务和提供者本身]都只是提供者的包装 谁能帮助我理解这些问题: 为什么所有这些都是提供者的包装器?假设我有一个名为“Shane”的factory/service”,为什么我要将它传递给提供者来创建“Shane”对象 那么为什么会有提供商/服务 工厂、服务和其他服务对于提供者来说是非常有用的包装。提供程序要求编写这么多代码: function provider(name, provider_) {
provider
函数,似乎所有的服务[常量、值、工厂、服务和提供者本身
]都只是提供者的包装
谁能帮助我理解这些问题:
提供者的包装器
?假设我有一个名为“Shane
”的factory/service
”,为什么我要将它传递给提供者来创建“Shane
”对象
提供商/服务
工厂、服务和其他服务对于提供者来说是非常有用的包装。提供程序要求编写这么多代码:
function provider(name, provider_) {
assertNotHasOwnProperty(name, 'service');
if (isFunction(provider_) || isArray(provider_)) {
provider_ = providerInjector.instantiate(provider_);
}
if (!provider_.$get) {
throw $injectorMinErr('pget', "Provider '{0}' must define $get factory method.", name);
}
return providerCache[name + providerSuffix] = provider_;
}
这就是提供者的工作方式:
$get
方法。此函数接受其他服务作为参数,因此您可以在这里与某些服务交互$get
方法的结果是您的服务的实际价值,它可以注入到其他服务、控制器等中factory
。如果您甚至不需要使用服务,请使用服务
(这与js构造函数的正常功能相同)或值(如果您的服务实际上是静态值且不需要额外准备)
请查看文档,了解所有这些注册函数的确切API。我被打动了,你能帮我回答这个问题吗。。。我太糊涂了。这个问题太宽,无法给出答案,而不是已经给出了答案。试着用另一个词问[服务/工厂/装饰商/供应商]这些是供应商而不是服务?。服务是我们使用这些提供商创建的服务吗?对吧?这取决于你注入实体的阶段。将向.config
或.provider
中注入提供程序。工厂、指令或其他东西会将服务引入inject。此外,在angular文档中也可以找到。它的底部有一个很好的比较表
angular.module('app', []).provider('myProvider', function(/*here you can inject another providers*/) {
// this function can be called by another providers
this.config = function() {};
this.$get = function(/*here you can inject services*/) {
// exprort your service value
return {};
};
});