AngularJS路由未在页面加载时解析

时间:2015-05-20 13:27:03

标签: javascript angularjs url-routing

我尝试在我的应用程序中实现AngularJS路由器。 所以我定义了一条路线(angular.module('MyModule').config()):

$routeProvider
  .when('/:stepId?', {
          templateUrl: EditorApp.webDir + 'bundles/innovapath/angularjs/Step/Partial/step-form.html',
          controller: 'StepFormCtrl',
          controllerAs: 'stepFormCtrl',
          resolve: {
              step: [
                  '$route',
                  'PathService',
                  function($route, PathService) {
                      var step = null;

                      // Retrieve the step from route ID
                      if ($route.current.params && $route.current.params.stepId) {
                          step = PathService.getStep($route.current.params.stepId);
                      }

                      return step;
                  }
              ],
              inheritedResources: [
                  '$route',
                  'PathService',
                  function($route, PathService) {
                      var inherited = [];

                      var step = PathService.getStep($route.current.params.stepId);
                      if (angular.isDefined(step) && angular.isObject(step)) {
                          var path = PathService.getPath();

                          // Grab inherited resources
                          inherited = PathService.getStepInheritedResources(path.steps, step);
                      }

                      return inherited;
                  }
              ]
          }
    })
    .otherwise({
        redirectTo: '/:stepId?'
    });

我也在监听$routeChangeStart事件,但是当我的页面加载时它不会被触发。

我无法弄清楚为什么路线没有解决。此外,当我用F5刷新页面时,我遇到了同样的问题。

当我在我的应用程序中使用内部链接时,路径解析工作完美。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

好的,找到了。

在处理指令ng-view之前,我有许多其他父指令需要初始化,因此它推迟计算错过$locationChange事件的路由。

解决方案是强制路线计算:

$route.reload();