【问题标题】:Angularjs - cross controller Factory UpdateAngularjs - 跨控制器工厂更新
【发布时间】:2013-04-21 16:15:33
【问题描述】:

我有两个控制器共享同一个工厂。其中一个控制器正在更新工厂变量。其他人应注意该更改并稍后显示。

这就是我尝试的方式: http://plnkr.co/edit/q1NS6ytRduLlbcgJlnDU?p=preview

但它不起作用。跨控制器共享变量的最佳和正确方法是什么?如何让我的代码工作?

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    您的问题与 AngularJS 有关,而是与 JavaScript 中原始值的闭包行为有关。简而言之,如果你有一个原始类型的闭包,它就是一个可以在你的本地函数中访问的复制值。您正在失去与原始变量的连接,无法从本地范围修改它。

    将原始值更改为对象引用,您的代码将开始按预期工作:http://plnkr.co/edit/gEQ2KPsEEtBRfTbjqPcO?p=preview

    【讨论】:

    • 那么,该示例中的工厂是单例吗?我以为只有服务是单例的。
    • @finishingmove 工厂和服务是单例的。
    • @finishingmove .factory、.service 和 .provide 只是描述如何创建对象实例(通常在 AngularJS 术语中称为服务)的不同方式。所有这些对象都是单例。不幸的是,“服务”这个词有点重,所以很容易混淆。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-05
    • 1970-01-01
    • 2014-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多