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