angularjs – 在所有$http异步调用完成后加载路径模板/控制器

前端之家收集整理的这篇文章主要介绍了angularjs – 在所有$http异步调用完成后加载路径模板/控制器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
目前,我有一个index.html,内容如下:

<div ng-controller="MainCntl">  
    <div ng-view></div>
</div>

ng-view根据路由URL加载“template1.html”或“template2.html”. “template1”由“Controller1”控制,“template2”由“Controller2”控制.

我想做的事情:只有在MainController内的所有异步调用完成后才加载URL映射内容(使用$routeProvider).

任何建议都将受到高度赞赏.

解决方法

AngularJS路由有一个用于此目的的属性,即resolve属性

window.angular.module('app',[])
  .config(['$routeProvider',function($routeProvider) {
    $routeProvider
      .when('/',{
        templateUrl: 'afterDoingSomething.html',controller: 'appCtrl',resolve: {
          // function that returns a promise
        }
      })
      .otherwise({
        redirectTo: '/'
      });
  }])

这样,只有在返回的promise被解析后才会加载视图.

试图解释这一点是没有意义的,当egghead解释它时,那么好:

> On promisses
> The resolve function
> A More pratical application

请记住,任何$http或$resource调用都将返回这些promisses,因此您不必直接使用它们(返回$http(…)也可以正常工作 – 或者您可以将许多$http调用合并到一个promise中)

猜你在找的Angularjs相关文章