我们在angularjs.my的模块中使用服务,工厂和提供者。问题是彼此之间的区别是什么,它们应该在angularjs.please中使用什么条件来解决我的疑问。
答案 0 :(得分:0)
服务是class
。您应该提供具有constructor
功能的服务。 Angular只会实例化(新增)此class
的一个实例。这是一个单身人士。
angular.module('app', [])
.service('someService', SomeService);
SomeService.$inejct = ['dependency'];
function SomeService(dependency) {
this.foo = 'foo'
// . . .
}
SomeService.prototype.bar = function() {
return 'bar';
}
工厂希望传递给它的函数遵循JavaScript factory pattern
。这是一个未初始化的函数,并返回一个唯一的对象。 Angular只会调用一次这个工厂 - 所以它也是一个单例。
angular.module('app', [])
.factory('someFactory', ['dependency', someFactory]);
function someFactory(dependency) {
return {
foo: 'foo',
bar: function() {
return 'bar';
}
}
}
提供商是class
,允许您在配置时间内配置服务
angular.module('myApp', [])
.provider('someService', SomeServiceProvider);
function SomeServiceProvider() {
this.foo = 'foo'
this.bar = 'bar';
}
SomeServiceProvider.prototype.setFooBar = function(foo, bar) {
this.foo = foo;
this.bar = bar;
}
SomeServiceProvider.prototype.$get = function() {
return new SomeService(this.foo, this.bar);
}
function SomeService(foo, bar) {
this.foo = foo;
this._bar = bar;
// . . .
}
SomeService.prototype.bar = function() {
return this._bar;
}
现在,在模块的配置部分,您可以执行someServiceProvider.setFooBar('baz', 'buz')
答案 1 :(得分:0)
查看此链接:link ....深入描述服务,工厂和供应商