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