Угловой переход на абстрактное состояние
Я работаю над приложением, созданным с помощью 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>