Angular js - Services are singleton objects 是什么意思?
Angular js - Services are singleton objects means?
它说 Angular JS 服务是单例对象,在应用程序中只实例化一次。
在实例化方面,它与 Angular JS 工厂或控制器有何不同?
带有 fiddle 的答案会有所帮助。
AngularJS 中没有 factory
组件。工厂是一个传递给 module.factory()
的函数,其职责恰恰是 创建 服务实例。此工厂仅被 Angular 调用一次,以创建服务的唯一实例。这个由工厂函数返回的唯一实例随后被注入到需要服务的任何地方。
所以,简而言之,当你这样做时
app.factory('foo', function() {
var service = {};
...
return service;
});
您没有定义 工厂。您传递一个工厂函数给app.factory()
,这个工厂创建和returns服务实例。 'foo'
是服务的名称。
控制器根本不是单例。每次使用 ng-controller="FooCtrl"
或在某些路由或指令中使用 FooCtrl 时,都会创建一个新的 FooCtrl
实例。
服务是一个class或一个对象,一旦你创建了一个class的对象,它在单例模式下工作,相同的对象将被重用,因此内存利用率非常低。更多详情 tutespace.com
它说 Angular JS 服务是单例对象,在应用程序中只实例化一次。 在实例化方面,它与 Angular JS 工厂或控制器有何不同?
带有 fiddle 的答案会有所帮助。
AngularJS 中没有 factory
组件。工厂是一个传递给 module.factory()
的函数,其职责恰恰是 创建 服务实例。此工厂仅被 Angular 调用一次,以创建服务的唯一实例。这个由工厂函数返回的唯一实例随后被注入到需要服务的任何地方。
所以,简而言之,当你这样做时
app.factory('foo', function() {
var service = {};
...
return service;
});
您没有定义 工厂。您传递一个工厂函数给app.factory()
,这个工厂创建和returns服务实例。 'foo'
是服务的名称。
控制器根本不是单例。每次使用 ng-controller="FooCtrl"
或在某些路由或指令中使用 FooCtrl 时,都会创建一个新的 FooCtrl
实例。
服务是一个class或一个对象,一旦你创建了一个class的对象,它在单例模式下工作,相同的对象将被重用,因此内存利用率非常低。更多详情 tutespace.com