它说Angular JS Services是单例对象,只在app中实例化一次。 在实例化方面,它与Angular JS工厂或控制器有何不同?
小提示的答案会有所帮助。
答案 0 :(得分:3)
AngularJS中没有factory
个组件。工厂是一个函数,传递给module.factory()
,其职责恰恰是创建服务实例。此工厂仅由Angular调用一次,以创建服务的唯一实例。然后,由工厂函数返回的这个唯一实例将在需要服务的任何地方注入。
所以,简而言之,当你做
时app.factory('foo', function() {
var service = {};
...
return service;
});
您未定义工厂。您将工厂函数传递给app.factory()
,此工厂创建,返回服务实例。 'foo'
是服务的名称。
控制器根本不是单身人士。每次使用ng-controller="FooCtrl"
或在某些路由或指令中使用FooCtrl时,都会创建一个新的FooCtrl
实例。
答案 1 :(得分:0)
服务是类或对象,一旦您创建类的对象,该服务便会以单例模式运行,同一对象将被重用,从而使内存利用率非常低。有关更多详细信息,tutespace.com