javascript - Angular 通用解析

标签 javascript angularjs

我试图通过扩展 route.resolve 来强制异步调用在解析任何路由之前完成,如下所示:

var originalWhen = $routeProvider.when;

$routeProvider.when = function(path, route) {
  route.resolve || (route.resolve = {});
  angular.extend(route.resolve, {
    availableCodes: function($rootScope, numbersService) {
      if ($rootScope.isAuthenticated) {
        numbersService.getAvailableCodes().$promise.then(function(data) {
          $rootScope.availableCodes = data.codes;
          console.log('resolve: ' + Date.now());
        });
      }
    }
  });
  return originalWhen.call($routeProvider, path, route);
};

令我困惑的是,当我向 Controller 添加 console.log('controller: ' + Date.now()) 时,记录的时间显示 Controller 在我的 Controller 之前加载。我的解析中的异步调用返回了。我的印象是,在解析中的异步调用确实得到解决之前,我的 Controller 不会触发。我在这里缺少什么?

最佳答案

是的,显示的when补丁应该按预期工作。

应该是

    return numbersService.getAvailableCodes().$promise.then(function(data) {
    ...

使用此 promise 作为路由解析。

关于javascript - Angular 通用解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35900125/

相关文章:

javascript - Iframe 中的 AngularJs ng-src

AngularJS + KendoUI 图表本地绑定(bind)

javascript - AngularJs $watch 抛出无法读取 null 的属性 'replaceChild'

angularjs - Angular UI 网格 : How to get number of total items after filtering

javascript - 如何使用 Javascript 保存登录凭据?

javascript - 获取具有在 View 实例中定义的特定 id 的数据

javascript - 使用 Jest 中的 toMatchObject 检查对象是否具有一个属性,但不具有另一个属性

javascript - 想要删除 highcharts 图表这些标签前面的项目符号

javascript - 如何在没有浏览器同步和 Node 的情况下运行 Angular 2 应用程序?

javascript - 通过 $ionicActionSheet.show() 在 ionic 中打开文件资源管理器