02
2020
06

factory、service和provider是什么关系?

1.factory


把service的方法和数据放在一个对象里,并返回这个对象


app.factory('FooService', function(){


return {


target: 'factory',


sayHello: function(){


return 'hello ' + this.target;


}


}


});


2.service


通过构造函数方式创建service,返回一个实例化对象


app.service('FooService', function(){


var self = this;


this.target = 'service';


this.sayHello = function(){


return 'hello ' + self.target;


}


});


3.provider


创建一个可通过config配置的service,$get中返回的,就是用factory创建service的内容


app.provider('FooService', function(){


this.configData = 'init data';


this.setConfigData = function(data){


if(data){


this.configData = data;


}


}


this.$get = function(){


var self = this;


return {


target: 'provider',


sayHello: function(){


return self.configData + ' hello ' + this.target;


}


}


}


});


//此处注入的是FooService的provider


app.config(function(FooServiceProvider){


FooServiceProvider.setConfigData('config data');


});


从底层实现上来看,service 调用了 factory,返回其实例;factory 调用了 provider,返回其 $get 中定义的内容。factory 和 service 功能类似,只不过 factory 是普通 function,可以返回任何东西(return 的都可以被访问,所以那些私有变量怎么写,你懂的);service 是构造器,可以不返回(绑定到 this 的都可以被访问);provider 是加强版 factory,返回一个可配置的 factory。

« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。