2015-03-25 55 views
0

我正在做一个相当平凡的通知系统,我想要一个主菜单(外部ng-view)显示用户的最后一个活动,从我看过的它看起来像服务最适合用于控制器之间的通信。我应该如何检测何时发生控制器A 立即来自控制器B.我应该观察服务的变量吗?还是有更简单的方法来做到这一点?或者给我应该只是有一个根作用域变量和$监视并改变与控制器?如何检测控制器之间的变量变化事件

+0

我是新来AngularJS,但也许你应该看看'你的控制器的松耦合emit' /'broadcast'功能 – 2015-03-25 10:39:26

回答

2

您应该使用$broadcast$on方法。互联网

上找到Here's a good example此外,没有更多的与$broadcast超过$emit在最新版本的角度的问题,因为$broadcast跑一样快$emit

不要使用$ watch,因为它会创建很多事件(角度也有10次重新运行迭代以防止死锁)。

手表监听器可能会更改模型,这可能会触发其他监听器触发。 这是通过重新运行观察者直到没有检测到 发生更改来实现的。重新运行迭代限制为10,以防止死锁的无限循环 。

更多here

0

$ watch每当您的变量发生变化时都会触发。您可以使用带有$ on的$ emit或$ broadcast作为不太常规的事件。 这可以在工厂完成:how to emit events from a factory

0

可以在全局$窗口中存储某些内容并在其上创建一个监视表达式,这只是我的头顶,可能是更好的方法。

也看看这个,因为它是像诸如此类的事情,你需要做的:

Share data between AngularJS controllers