我有一个变量数组(我将其称为ArrVar),它可通过服务提供给所有控制器。该变量已被指定为范围变量CtrlA as $ scope.ArrVar。如果用户在CtrlA下切换按钮,则附加到CtrlA的方法将更改为$ scope.ArrVar,更新服务中的变量并使用ng-repeat显示列表。控制器间共享范围变量的最佳做法是什么?
但我有一个完全独立的控制器,CTRLB,这需要做下CTRLA,这是不可访问从CTRLB变化范围变量。
我能想到的两种解决方案:
- 全局控制器
- 在根范围
分配变量,但两种方法似乎并没有成为最佳实践。有没有其他优雅的方式呢?两个控制器完全不同,所以合并不会。
我想大多数人通常与SharedServices去。在这个网站上有几个关于他们的问题。 – dckuehn 2014-11-08 05:38:14
但服务不允许更新范围变量。 CtrlB可以通过使用该服务来接收最新更新的ArrVar,但它无法访问$ scope.ArrVar,它在CtrlA – Jas 2014-11-08 05:42:47
的范围内您可以更新属于共享服务的变量,并观察该变量从一个控制器。当该值改变时,CtrlB可以执行一个动作,更新由CtrlA监视的另一个sharedService变量,然后触发另一个动作。 – dckuehn 2014-11-08 05:44:32