2014-10-16 29 views
0

我有一个简单的控制器方法来执行一些操作(它控制着我的页面的标题)。但是,我希望发送消息并确认其他控制器(例如页面主体上的表格控制器)允许执行此操作。AngularJS:在继续操作之前获得消息回复

我想什么做的,就是:

  • 从第一控制器,在另一个控制器发送消息“BeforeAction”
  • ,赶上消息,产生可能是上下文相关的回复并以某种方式将该答复发送给第一控制器。
  • 根据回复,继续我的行动或放弃它。

  • 如果没有侦听者的消息在Action存在之前,我想动作继续无缝。

这是如何安排在角?

回答

1

在控制器之间共享数据时,您有2个选项。更好的可能是创建一个共享服务并将其注入到两个控制器中。在这个服务中你可以有一个消息变量。 Controller1可以设置消息。 Controller2可以在消息上有$ watch,并在消息值更改时适当地采取行动。

另一种选择是使用自定义事件。如果您在Controller1中使用$ rootScope。$ emit(message),它将沿着作用域链下行,您可以使用$ scope。$ on(message)来捕获它。

我认为你的服务会更好。它可以让你保存两个控制器都可以访问的监听器的注册表。例如,如果Controller2在消息变量上设置一个监视,则将该事实保存到一个寄存器变量中。在Controller1 beforeAction中,您可以先检查寄存器。如果是空的,继续,否则更改消息变量的值

相关问题