没有URL的状态的AngularJS ui-router默认状态

时间:2015-06-29 20:42:01

标签: javascript angularjs angular-ui-router

我们在一个页面上有几种状态,因此各州都没有分配任何网址。有没有办法为无URL状态指定默认状态?可能类似于$urlRouterProvider.otherwise('/');

我尝试使用Angular的run语句或控制器内的状态但导致transition superseded错误,这可能是由于$state hasn& #39; t已初始化。

以下是一个简短的例子。我想直接在stateA开始。

angular
  .module('myModule')
  .config([
    '$stateProvider',
    function($stateProvider) {
      $stateProvider
        .state('stateA', {
          controller: function () {
            // Do some magic related to state A
          }
        })
        .state('stateB', {
          controller: function () {
            // Do some magic related to state B
          }
        });
    }
  ])
  .controller(['$state', '$timeout', function($state, $timeout){
    // My global controller
    // To set a default state I could do:
    // $timout(function () {
    //   $state.go('stateA'); 
    // }, 0);
    // But that doesn't feel right to me.
  }]);

更新: 感谢this answer我发现我必须将$state.go包裹到$timeout中,以避免transition superseded错误。

1 个答案:

答案 0 :(得分:5)

这将调用custom rule进入默认状态而不会篡改网址。

$urlRouterProvider.otherwise(function($injector) {
    var $state = $injector.get('$state');
    $state.go('stateA');
});`