【问题标题】:Angular shared model with multiple controllers具有多个控制器的 Angular 共享模型
【发布时间】:2015-08-02 15:08:51
【问题描述】:

我是 Angular 的新手,并试图理清我的概念:

我的应用需要一个模型,该模型将由不同的控制器更新。因此,模型应该共享。以下链接清楚地解释了我应该如何继续它

http://www.webdeveasy.com/angularjs-data-model/

它使用工厂方法创建两个服务。管理器服务检查模型类是否已经实例化。如果是,它返回一个已经实例化的引用,否则它 new's 一个实例。因此,每个模型都看到相同的模型实例,并且在更新模型时,所有视图中都会发生更新。

如果不是使用factory 创建服务,而是使用自动返回new'd 实例的service 方法创建服务,那么它会被共享或绑定到控制器。

我假设我的情况无法使用service 方法实现,我必须使用factory 方法而不是service 方法,因为每次将服务注入任何控制器时new's 服务。 Angular 是否不会在内部维护一些池以确保在所有控制器中注入相同的服务实例。

我不希望模型有一个额外的管理器对象来确保在所有控制器中使用相同的实例

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    就您的情况而言,服务和工厂都可以使用,因为它们在功能上本质上是相似的。

    根据我的理解,您希望根据单例设计模式在所有控制器之间共享一个新闻实体,确保一次更新 -> 全部更新。这可以使用 Angular 服务完美实现。

    我自己发现使用服务比工厂方法更容易,因为前者具有易于使用的语法:D

    另外,为了更了解这两种方法的区别,你可以看看this的答案

    【讨论】:

    • @TechMa9iac 每次更新一个类时,它都会创建一个单独的实例,服务会自动更新,不允许共享实例。我无法在服务方法中跟踪实例以跨控制器共享它们,但在工厂中我可以
    • 它们不会是新的。您将在所有控制器和其他应用程序组件之间共享相同的实例。以编程方式实现它..
    • @TechMa9iac 我没有任何“新闻”实体,我的意思是 javascript new 关键字
    • 我明白..试一试..服务会工作,不会有任何新的实例,同样会被共享。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-29
    • 2012-08-23
    • 2012-02-16
    • 2015-09-30
    • 2016-02-13
    相关资源
    最近更新 更多