在子范围内调用回调的最佳方法是什么?

时间:2016-07-12 15:47:53

标签: javascript angularjs

我有一个页面通过多个http请求加载一些数据,然后我必须在本页内的几个指令中做一些逻辑。
我想问一下,对于这种情况,最好的做法是什么? 现在我有一个布尔标志,表示已加载内容。第一个想法是在这些指令中使用超时来检查内容是否已加载,如果内容已加载,则执行此逻辑。如果有,则执行此逻辑。
第二个想法是使用广播。我喜欢这个想法,但由于那些指令有封闭范围,据我所知,我必须在$ rootScope上播放。据我所知,从生产率的角度来看,这不是最好的想法 所以,请告诉我这种任务的最佳解决方案是什么。

2 个答案:

答案 0 :(得分:3)

$ rootScope.emit()是angular1的最佳方法。这是内置的pubsub模式

$ rootscope.emit()作为广播方法并不昂贵,因为广播渗透了所有范围

只需在控制器中使用emit

$rootScope.$emit('topic');

in directive

$rootScope.$on('topic', function(){})

答案 1 :(得分:0)

您可以使用$q service。具体来说,它是$q.all()方法

  

将多个承诺合并到一个在何时解决的承诺中   所有的输入承诺都得到了解决。

优点是“Angular native”所以不需要担心与$ scope等同步