【发布时间】:2014-02-05 05:55:13
【问题描述】:
我对 AngularJs 比较陌生,我正在尝试用它构建一个单页应用程序。我的应用程序在内容管理站点中运行。我有 3 个工厂用于用户、组和站点功能。
我对使用 angular 的 $cacheFactory 很感兴趣,但我不确定如果我的数据保留在工厂中会有什么好处,因为它是单例的。
例如,我的用户工厂有一个名为 allUsers 的对象。这个对象通过我的应用程序用于不同的视图。直观地说,它似乎应该被缓存,但我很难理解为什么因为这个对象在用户工厂中,可以从我的任何控制器访问。
【问题讨论】:
-
Angular 中的工厂是为控制器/其他工厂等提供服务的单调对象。 $cacheFactory 是为控制器(或任何其他工厂)提供缓存服务的工厂(意思是服务)对于这个问题)。你可以随意使用这个工厂来缓存对象。
-
K 所以假设我的服务/工厂有一个 allUsers 对象,从 cacheFactory 而不是用户服务/工厂获取该对象有什么好处?
-
如果您决定缓存您的用户对象,您可能应该使用 UserFactory 从缓存中检索它,而不是直接从控制器中使用缓存工厂。
-
所以好处就是在我的应用程序中集中对象。与其让我的控制器通过工厂获取对象,它们都可以通过 cacheFactory 并从那里获取它们。
-
这是一个设计决策。我认为您的控制器应该通过相关工厂访问相关对象。如果您将来决定不使用缓存或使用不同的缓存,您只需更改工厂而不需要更改所有控制器。我是基本的分离。
标签: angularjs singleton factory language-features cachefactory