0

我已经阅读了一些关于 $routeprovider 解析功能的文章。主要思想来自我最喜欢的 AngularJS 开发人员 Todd Motto 创建的这个 repo。https://github.com/toddmotto/angularjs-styleguide#controllers

// avoid
function MainCtrl (SomeService) {
  var _this = this;
  // unresolved
  _this.something;
  // resolved asynchronously
  SomeService.doSomething().then(function (response) {
    _this.something = response;
  });
}
angular
  .module('app')
  .controller('MainCtrl', MainCtrl);

// recommended
function config ($routeProvider) {
  $routeProvider
  .when('/', {
    templateUrl: 'views/main.html',
    resolve: {
      // resolve here
    }
  });
}
angular
  .module('app')
  .config(config);

我真的很喜欢 route 在加载控制器之前首先解决所有控制器依赖项的方式。它使代码非常干净。但是,如果解析过程花费大量时间,则页面将停留在那里,没有视觉反馈,直到所有内容都完成加载。

在我切换到使用 $routeprovider 解析之前,我曾经将所有内容都放在控制器中,然后创建一个异步加载视图指令。该指令将在所有 $http 请求正在下载数据时显示加载进度条。我想知道是否有办法保留视觉反馈并将所有解决步骤放在路由提供程序中。

谢谢!

4

1 回答 1

2

当解决开始时,您可以挂钩$routeChangeStart$routeChangeSuccess事件。您侦听的这些事件可以根据事件类型显示或隐藏 ajax 微调器/加载消息。

更多在这里!

于 2014-09-16T12:30:56.237 回答