web-dev-qa-db-fra.com

Comment faire pour $ state.go ()

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?

6
Dunaevsky Maxim

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
16
Radim Köhler

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).

1
Dunaevsky Maxim