我试图通过将它们与一些分散文件合并来动态加载一堆状态。
我正在使用 $ 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()期间等待所有状态加载,然后尝试匹配正确的状态?
感谢。
答案 0 :(得分:0)
我不确定我所拥有的是什么相关但我会发布它:我在配置阶段创建了一些对象。对象配置是可覆盖的,因此我无法在提供程序的配置阶段构建状态。所以我在我的提供商的$ get中移动了$ stateProvider调用和$ urlRouterProviders调用。
如果我试图瞄准其中一个生成状态,那么第一次加载页面或刷新时它就不起作用了。我不得不使用" module.run(myProvider){}"强制我的提供程序实例化以使其工作。我的猜测是我的app.run在$ urlRouterProvider解析任何内容之前运行。
另一种解决方案可能是使用推迟删除ng-app的应用程序的引导程序,并在准备就绪时使用angular.bootstrap。