Is mijn $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'
});
Het werkt voor de status ‘bedrijf’ (ik gebruik ui-sref), maar deze code werkt niet (aangeroepen vanuit de status ‘bedrijf’):
$state.go('.detail', {
id: $scope.selectedItem.id //selectedItem and id is defined
});
Ik heb officiële documenten en antwoorden van StackOverflow gelezen, maar ik heb geen oplossing gevonden. Ik kan ui-sref niet gebruiken, ik gebruik ui-grid en de nieuwe staat wordt geopend nadat ik een rij uit de tabel heb geselecteerd om te bewerken.
Wat doe ik verkeerd?
Antwoord 1, autoriteit 100%
Wat altijd zou werken, is de volledige statusdefinitie:
// instead of this
// $state.go('.detail', {
// use this
$state.go('company.detail', {
id: $scope.selectedItem.id //selectedItem and id is defined
});
In doc er zijn deze opties gedefinieerd, maar ze zijn afhankelijk van de HUIDIGE status:
aanstring
Absolute staatsnaam of relatief staatspad. Enkele voorbeelden:
- $state.go(‘contact.detail’) – gaat naar de status contact.detail
- $state.go(‘^’) – gaat naar een bovenliggende staat
- $state.go(‘^.sibling’) – gaat naar een broer of zus
- $state.go(‘.child.grandchild’) – gaat naar de kleinkindstaat
Antwoord 2, autoriteit 9%
Mijn fout zit eigenlijk in de reguliere expressie:
.state('company.detail', {
url : '/{id:\d*}',
templateUrl : '/admindesktop/templates/company/detail/',
controller : 'CompanyDetailController'
})
{id:\d*}werkte (integer id).
Antwoord 3, autoriteit 4%
Om de huidige status te laden. Bekijk dit eens.
$state.go($state.current, {}, {reload: true}); //second parameter is for $stateParams