如何使用angular-ui-router阻止某些子状态中的嵌套解析器?

时间:2015-03-26 13:49:54

标签: angularjs angular-ui-router

这是plnkr:http://plnkr.co/edit/wfIFA01kfG1zggsPo7Q9

我有一个抽象的父状态' app'和两个孩子的状态' app.home'和' app.signin'。父状态必须解决一些异步的东西。

app.core

  $stateProvider
    .state('app', {
      url: '',
      abstract: true,

      // has to be resolved by any child state, except app.auth
      resolve: {
        Something: function($http) {
          // real delay
          return $http.get('http://httpbin.org/delay/5');
        }
      }
    });

app.home

  $stateProvider
    .state('app.home', {
      url: '/home',
      views: {
        'main@' : {
          template: '<div>I am home page</div> <a ui-sref="app.signin">Sign in</a>'
        }
      }
    });

app.signin

  $stateProvider
    .state('app.signin', {
      url: '/',
      views: {
        'main@' : {
          template: '<div>I am signin page </div> <a ui-sref="app.home">Home page</a>'
        }
      }
    });

我希望任何子状态也需要Somethingapp.signin除外。我怎么能这样做?


另外值得一提的是,我没有在我的孩子状态中描述任何解析器。但他们仍然等到父母完成了,我想到了(引自ui-router doc):

  

如果您愿意,必须将解析密钥注入子状态   在实例化之前等待promises得到解决   孩子。

而且我不知道为什么儿童州仍在解决父母的依赖。

1 个答案:

答案 0 :(得分:0)

因此,ideia是创建app.signin将依赖的另一个抽象状态。这个掠夺者证明了(来自你的掠夺者的叉子):http://plnkr.co/edit/kpfbylbBTVX8Erm5cgoF?p=preview

(function() {
  'use strict';
  angular
    .module('app.auth', [
      'app.core'
    ])
    .config(function ($stateProvider) {
      $stateProvider
      .state('app2', {
          url: '',
          abstract: true
        })
        .state('app2.signin', {
          url: '/',
          views: {
            'main@' : {
              template: '<div>I am signin page </div> <a ui-sref="app.home">Home page</a>'
            }
          }
        });
    });
})();