Angularjs ui-router stato astratto con risoluzione

È 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:

  • genitore e risoluzione dello stato dell’interfaccia utente angular (risolti nidificati)

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 …