我在Angular中发送和捕获事件时遇到了一些麻烦。
考虑这个问题:Plunk..
如你所见,我有两个控制器和一个指令。指令'生活'在控制器1中。当指令中发生某些事情时,我想在控制器2中捕获此事件。正如您在插件中看到的那样,没有任何内容记录到控制台;事件没有被抓住。
我也尝试过使用某项服务。在这种情况下,我在服务上创建了一个方法,当调用此方法时,我抛出事件。就像在Plunk中一样,我在Controller 2中监听事件,但这也没有用。
归根结底是我想在另一个控制器上调用一个方法..
答案 0 :(得分:2)
在您的Plunker中,第二个控制器(SecondController
)已注册,但它从未实际初始化。这就是为什么你的听众从不记录事件的原因。
目前尚不清楚使用第二个控制器的方式,地点和时间,但如果使用ng-view(通过路由)或ng-controller进行初始化,则其监听器将观察事件。
答案 1 :(得分:1)
每次访问路径时,都会(重新)创建关联的控制器(和$ scope)。
由于您提到Controller 2与路由相关联,因此只有在您访问该路由时才会存在(如@Ajay和@Stewie已提到的那样),因此您无法在该控制器中捕获事件。
我建议您使用一些API /方法创建服务,以执行以下操作:
您的指令会调用该方法来记录触发器。 您的Controller 2会在创建时调用check方法(如果找到触发器集,则可能会调用clear方法)。