È ansible creare uno stato astratto con ui-router che deve risolvere i dati? Devo caricare la metà superiore di una pagina con le informazioni del profilo e quindi avere un sotto-nav che carica altri dettagli nella parte inferiore della pagina. L’idea è che lo stato astratto carichi le informazioni del profilo ogni volta, indipendentemente dallo stato figlio in cui mi trovo. Non sembra funzionare.
Esempio:
.state('app.profile', { abstract: true, url: 'user/:username', views: { content: { templateUrl: 'views/frontend/profile.html', controller: 'ProfileCtrl', resolve: { data: ['$stateParams', 'ProfileService', function ($stateParams, ProfileService) { var username = $stateParams.username; return ProfileService.getProfile(username); }] } } } }) .state('app.profile.something', { url: '', views: { profile: { templateUrl: 'views/frontend/profile.something.html', controller: 'ProfileCtrl', resolve: { data: ['$stateParams', 'ProfileService', function ($stateParams, ProfileService) { var username = $stateParams.username; return ProfileService.getProfileSomething(username); }] } } } })
La soluzione qui è di distinguere i nomi dei dati risolti. Controlla questa risposta:
E il suo plunker
Quindi nel nostro caso avremmo bisogno di questo cambiamento in genitore
resolve: { dataParent: ['$stateParams', 'ProfileService', function ($stateParams, ProfileService) { var username = $stateParams.username; return ProfileService.getProfile(username); }] }
e questo in bambino
resolve: { dataChild: ['$stateParams', 'ProfileService', function ($stateParams, ProfileService) { var username = $stateParams.username; return ProfileService.getProfileSomething(username); }] }
così, invece di lavorare con la risoluzione: {data: …} in genitore e figlio avremmo questi:
// parent state resolve : { dataParent: ... } // child state resolve : { dataChild: ... }
Un esempio di lavoro dovrebbe essere migliore di altre parole …