【发布时间】:2013-04-21 16:15:33
【问题描述】:
我有两个控制器共享同一个工厂。其中一个控制器正在更新工厂变量。其他人应注意该更改并稍后显示。
这就是我尝试的方式: http://plnkr.co/edit/q1NS6ytRduLlbcgJlnDU?p=preview
但它不起作用。跨控制器共享变量的最佳和正确方法是什么?如何让我的代码工作?
【问题讨论】:
标签: javascript angularjs
我有两个控制器共享同一个工厂。其中一个控制器正在更新工厂变量。其他人应注意该更改并稍后显示。
这就是我尝试的方式: http://plnkr.co/edit/q1NS6ytRduLlbcgJlnDU?p=preview
但它不起作用。跨控制器共享变量的最佳和正确方法是什么?如何让我的代码工作?
【问题讨论】:
标签: javascript angularjs
您的问题与 AngularJS 有关,而是与 JavaScript 中原始值的闭包行为有关。简而言之,如果你有一个原始类型的闭包,它就是一个可以在你的本地函数中访问的复制值。您正在失去与原始变量的连接,无法从本地范围修改它。
将原始值更改为对象引用,您的代码将开始按预期工作:http://plnkr.co/edit/gEQ2KPsEEtBRfTbjqPcO?p=preview
【讨论】: