如何检测控制器之间的变量事件

时间:2015-03-25 10:23:54

标签: angularjs

我正在建立一个相当简单的通知系统,我想要一个主菜单(在ng-view之外)显示用户的最后一项活动,从我读过它看起来像服务是最好的用于控制器之间的通信。如何从控制器B检测到控制器A 立即中发生了什么事情。我应该观察服务的变量吗?或者有更简单的方法吗?或者我应该给一个根范围变量和$ watch并用控制器改变它?

3 个答案:

答案 0 :(得分:2)

您应该使用$broadcast$on方法。 Here's a good example在互联网上找到

此外,最近版本的角色$broadcast已超过$emit,因此$broadcast的运行速度与$emit一样快。

不要使用$ watch,因为它会产生很多事件(angular也有10次重新运行迭代的限制以防止死锁)。

  

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

了解更多here

答案 1 :(得分:0)

$ watch会在每次变量变化时触发。你可以使用$ emit或$ on with $ on来获得不太常规的事件。 这可以在工厂中完成:how to emit events from a factory

答案 2 :(得分:0)

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

另外看一下这就像你需要做的那样:

Share data between AngularJS controllers