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