在路由更改时监听 RootScope 事件

Listen to RootScope Event on Route Change

在单页应用中,我使用的是HTML5模式路由。假设 someDomain.com/#/credits 变成 someDomain.come/credits。单击选项卡更改路线。

所以假设我有 tab1 tab2 tab3,所以相应选项卡的路由是 someDomain.com/tab1 someDomain.com/tab2 someDomain.com/tab3。需要跨所有路由获取一些数据,因此为相同的 return promise 对象创建了一个服务。当对象得到解决时,我将抛出 $rootscope.emit 事件并在相应的选项卡上使用 $on 收听它。由于我的tab1 tab2和tab3数据是依赖服务数据的,所以我监听事件,然后只执行相应的任务。

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

提前致谢

所以发生的事情是在广播事件时未调用子控制器,因此不存在 $on 子侦听器的注册。例如:在 tab1 上时,tab2 控制器未加载,因此在 tab1 页面期间抛出的广播事件(即使它在 rootscope 上抛出)将不会监听 tab2 和 tab3 上的 $on。所以在父广播之前加载子听众是必要的。

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