在AngularJS中,当我在控制器初始化期间向所有控制器广播时,我是否必须将setTimeout广播?

时间:2016-03-14 16:42:21

标签: angularjs angularjs-events

换句话说,我是否必须等待下一个事件周期使用$rootScope.broadcast()进行广播,以便使用$rootScope.on()的其他控制器可以接收广播事件?

这不是通常的应用程序流程,但是让我们说如果我们在应用程序中有一个演示模式会短路某些逻辑,而不需要去服务器取东西,但可以提供演示使用broadcast()的数据,我们必须使用

setTimeout(function() { 
    $rootScope.broadcast(...);
}, 0);

以便其他控制器可以拿起它?

原因是,其他控制器可能尚不存在。如果app模块定义了5个控制器,或者使用依赖注入来声明它依赖于2组控制器,abc.xyz.controllersabc.efg.controllers

由于控制器定义是

.controller("name", function(...) {

})

所以通过提供函数,你不知道何时调用函数(创建控制器),但假设所有创建都在第一个事件周期完成,那么如果你等待一个周期进行广播,那么你可以确定所有控制器都会接收广播吗?这也是正式记录的吗?

0 个答案:

没有答案