ui-router $ urlRouterProvider等到所有状态都加载完毕

时间:2016-02-05 15:24:19

标签: angularjs angular-ui-router angularjs-provider

我试图通过将它们与一些分散文件合并来动态加载一堆状态。

我正在使用 $ http.get 收集所有内容,然后使用 $ stateProvider.state(name,config)添加所有内容。

一切都好。

问题在于,如果我输入另一个URL,除了根URL“/”之外,相同的URL永远不会被解析为正确的状态。

似乎,如果我从根状态加载应用程序并从那里导航,$ urlRouterProvider可以匹配所有已加载的状态,但是,如果我尝试从子状态进入应用程序,例如“/ #/ anotherpage“,它无法匹配任何网址/状态,并且会回退到 .otherwise('/')

就好像它试图解析URL而不等待加载所有状态。

我正在使用 $ urlRouterProvider.deferIntercept()来尝试阻止它继续,在配置之后,我再次启用同步。

app.config(configure).run(['$urlRouter', function($urlRouter){
        $urlRouter.sync();
        $urlRouter.listen();
    }]);

如何确保 $ urlRouterProvider .config()期间等待所有状态加载,然后尝试匹配正确的状态?

感谢。

1 个答案:

答案 0 :(得分:0)

我不确定我所拥有的是什么相关但我会发布它:我在配置阶段创建了一些对象。对象配置是可覆盖的,因此我无法在提供程序的配置阶段构建状态。所以我在我的提供商的$ get中移动了$ stateProvider调用和$ urlRouterProviders调用。

如果我试图瞄准其中一个生成状态,那么第一次加载页面或刷新时它就不起作用了。我不得不使用" module.run(myProvider){}"强制我的提供程序实例化以使其工作。我的猜测是我的app.run在$ urlRouterProvider解析任何内容之前运行。

另一种解决方案可能是使用推迟删除ng-app的应用程序的引导程序,并在准备就绪时使用angular.bootstrap。

相关问题