Angular js - 服务是单例对象的意思吗?

时间:2015-09-20 09:13:35

标签: angularjs service singleton

它说Angular JS Services是单例对象,只在app中实例化一次。 在实例化方面,它与Angular JS工厂或控制器有何不同?

小提示的答案会有所帮助。

2 个答案:

答案 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