Угловой переход на абстрактное состояние

Я работаю над приложением, созданным с помощью AngularJS, который имеет два разных состояния:

  • Мастер интро-приложений
  • Страницы приложений (с шаблоном навигации и вложенными представлениями)

Я хочу, чтобы по умолчанию State 1 при первом доступе к приложению, после выполнения мастера, перейдите на страницы приложений, состояние 2.

Мое состояние "приложение" (состояние 2) является абстрактным состоянием, поскольку оно имеет вложенные представления. Поэтому я не могу перейти к этому состоянию.

.config(function($stateProvider, $urlRouterProvider) {
$stateProvider

  .state('intro', {
    url: '/',
    templateUrl: 'templates/intro.html',
    controller: 'IntroCtrl'
  })

  .state('app', {
    url: '/app',
    abstract: true,
    templateUrl: 'templates/menu.html',
    controller: 'AppCtrl'
  })

  .state('app.playlists', {
    url: "/playlists",
    views: {
      'menuContent' :{
        templateUrl: "templates/playlists.html",
        controller: 'PlaylistsCtrl'
      }
    }
  });

  $urlRouterProvider.otherwise("/");

})

Ответ 1

У меня с вами такая же проблема, вот еще сообщение об абстрактном состоянии: angularjs ui-router default child state и ui-sref

Это ясно объясняет, почему вы не можете получить доступ к прямому абстрактному состоянию

Немного поздно ответить на этот пост, но надеюсь, что это поможет.

(Btw, это должен быть комментарий)

Ответ 2

Я добавил службу определения местоположения на контроллер страницы "intro" и использую следующее для перехода в состояние приложения, которое работает для меня.

$location.path('app/playlists');

Меню menu.html загружается и перемещается в списки воспроизведения.

Ответ 3

В службе:

$location.path(
    $state.href('app.some.abstract.state', { some: 'params' })
);

Или в шаблоне ($state должен быть доступен в локальном или глобальном $scope):

<a ng-href="{{$state.href('app.some.abstract.state', { some: 'params' })}}">...</a>