Je travaille sur une application construite avec AngularJS qui a deux états différents:
Je souhaite passer par défaut à l'état 1 la première fois que quelqu'un accède à l'application, une fois que vous avez terminé l'assistant, passez aux pages de l'application, état 2.
Mon état "app" (État 2) est un état abstrait car il comporte des vues imbriquées. Donc, je ne peux pas passer à cet état.
.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("/");
})
J'ai le même problème avec vous, voici un autre article sur l'état abstrait: angularjs état enfant par défaut d'u-routeur et ui-sref
Cela explique clairement pourquoi vous n'êtes pas en mesure d'accéder directement à l'état abstrait
Il est un peu tard pour répondre à ce message, mais espérons que cela vous aidera.
(Btw, cela devrait être un commentaire)
J'ai ajouté le service $ location au contrôleur de la page "intro" et utilise ce qui suit pour passer à l'état de l'application qui fonctionne pour moi.
$location.path('app/playlists');
Le menu.html est chargé et navigue vers les listes de lecture.
Dans un service:
$location.path(
$state.href('app.some.abstract.state', { some: 'params' })
);
Ou dans un modèle ($state
doit être disponible dans le $scope
local ou global):
<a ng-href="{{$state.href('app.some.abstract.state', { some: 'params' })}}">...</a>