我已经阅读了大量文档,并且还针对此问题审阅了堆栈溢出帖子。 我在使用服务和工厂时仍然感到困惑。
任何人都可以解释使用真实世界的例子何时使用什么?
答案 0 :(得分:1)
关于服务的常见问题&工厂是单身对象, 每个应用程序都会创建一次实例。
基本上,角度服务会使用new
关键字返回一个对象,工厂是否确实返回了您创建的对象。
<强>服务强>
app.service('myService', function(){
this.myMethod = function(){
return 'something';
};
})
在上述服务中,我们添加了一个方法myMethod
,该方法可供注入服务的组件使用。 Service确实可以访问分配给this
上下文的所有属性。
<强>工厂强>
app.factory('myService', function(){
//here you can do some initial work before creating an service object.
//which is very advantageous part of service.
var configuredVariable = 'configured';
return {
myMethod : function(){
return 'something'+ configuredVariable;
};
}
})
在创建对象之前,您可以拥有控制器,在从服务返回对象之前,您可以进行一些配置类型的设置。
<强>摘要强>
何时使用服务以及何时在agularJS中出厂?
任何时候,如果您不想返回可配置对象,请使用服务。如果您要配置对象,则应选择factory
。