0

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

我用 $http.get 收集所有这些,然后$stateProvider.state(name, config)添加所有这些。

这里一切正常。

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

看来,如果我从根状态加载应用程序并从那里导航,$urlRouterProvider 可以匹配所有加载的状态,但是,如果我尝试从子状态进入应用程序,例如“/#/anotherpage ",它不能匹配任何 url/state 并且它回退到 .otherwise('/')

就像它尝试解析 URL 而不等待加载所有状态一样。

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

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

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

谢谢。

4

1 回答 1

0

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

如果我试图瞄准其中一个生成的状态,它在第一次加载页面或刷新时不起作用。我必须使用“module.run(myProvider){}”来强制实例化我的提供程序以使其正常工作。我的猜测是我的 app.run 在 $urlRouterProvider 解决任何问题之前正在运行。

另一种解决方案可能是使用 defer the bootstrap 您的应用程序删除 ng-app 并在您准备好时使用 angular.bootstrap。

于 2016-02-05T15:34:14.287 回答