Est-ce que mon $ stateProvider:
$stateProvider
.state('home', {
url : '/',
templateUrl : '/admindesktop/templates/main/',
controller : 'AdminDesktopMainController'
}).state('company', {
url : '/company',
templateUrl : '/admindesktop/templates/grid/',
controller : 'CompanyGridController'
}).state('company.detail', {
url : '/{id:\d+}', //id is
templateUrl : '/admindesktop/templates/company/detail/',
controller : 'CompanyDetailController'
});
C'est un travail pour l'état 'company' (j'utilise ui-sref), mais ce code ne fonctionne pas (appelé depuis l'état 'company'):
$state.go('.detail', {
id: $scope.selectedItem.id //selectedItem and id is defined
});
J'ai lu la documentation officielle et les réponses de StackOverflow, mais je n'ai pas trouvé de solution. Je ne peux pas utiliser ui-sref, j'utilise ui-grid et le nouvel état ouvert après la sélection d'une ligne du tableau à modifier.
Ce que je fais mal?
Ce qui fonctionnerait toujours est la définition d'état complète:
// instead of this
// $state.go('.detail', {
// use this
$state.go('company.detail', {
id: $scope.selectedItem.id //selectedItem and id is defined
});
Dans doc, ces options sont définies , mais elles dépendent de l'état CURRENT:
à _ chaîne
Nom d'état absolu ou chemin d'état relatif. Quelques exemples:
- $ state.go ('contact.detail') - ira à l'état contact.detail
- $ state.go ('^') - ira à un état parent
- $ state.go ('^. frère') - ira dans un état frère
- $ state.go ('. child.grandchild') - ira à l'état de petit-enfant
Mon erreur est dans l'expression régulière, vraiment:
.state('company.detail', {
url : '/{id:\d*}',
templateUrl : '/admindesktop/templates/company/detail/',
controller : 'CompanyDetailController'
})
{id:\d *} travaillé (id entier).