在路线变化中收听RootScope事件

时间:2015-08-02 12:58:48

标签: javascript angularjs html5 angular-routing

在单页面应用程序中,我使用的是HTML5模式路由。可以说someDomain.com/#/credits变为someDomain.come/credits。单击选项卡更改路由。

所以我说我有tab1 tab2 tab3所以路由fr相应的标签是someDomain.com/tab1 someDomain.com/tab2 someDomain.com/tab3。需要跨所有路由获取一些数据,因此为相同和返回的promise对象创建了一个服务。当对象得到解决后,我会抛出$rootscope.emit事件,并在相应的标签上使用$on进行监听。由于我的tab1 tab2和tab3数据依赖于服务数据,因此我会监听该事件,然后只执行相应的任务。

问题是当我从tab1页面单击Tab2时,反之亦然$ rootscopecope事件丢失,tab2不知道任何此类事件。我在这里错过了一些东西吗?我对angularJS很新,但却找不到合适的解决方案。这是因为html5路由模式还是路由中的正常行为?请帮帮我。

提前致谢

1 个答案:

答案 0 :(得分:0)

因此,当事件被广播时,不会调用子控制器,因此不存在$on子监听器的注册。例如:在tab1上,没有加载tab2控制器,因此在tab1页面中抛出的广播事件(即使它在rootscope上被抛出)也不会监听tab2和tab3上的$ on。因此,必须在父母广播之前加载儿童听众。

所以我已经转移到路由解析属性,这解决了我的情况。供参考:http://odetocode.com/blogs/scott/archive/2014/05/20/using-resolve-in-angularjs-routes.aspx