Ho un app che appare fondamentalmente come questoLe migliori pratiche per l'animazione più ui-viste come uno
<div ui-view="header">
<div ui-view="main">
<div ui-view="footer">
Ora, il piè di pagina rimarrà lo stesso per tutti i diversi stati della app, ma l'intestazione cambierà in alcuni stati, ma anche condividere contenuti in molti stati. L'unico ui-view
che cambierà in tutti gli stati è ui-view="main"
.
Attualmente la mia $stateProvider
assomiglia a questo (piè di pagina non ancora implementata):
app.config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider) {
$stateProvider.state('root',{
url: '',
abstract: true,
views: {
'header': {
templateUrl: appHelper.views+'/header.html',
},
}
})
.state('root.home', {
url: '/',
views: {
'header': {
templateUrl: appHelper.views+'/header.html',
},
'[email protected]': {
templateUrl: appHelper.views+'/home.html',
controller: 'HomeController as homeVm',
}
},
resolve: {
posts: function(dataService) {
return dataService.getPosts();
},
artists: function(dataService) {
return dataService.getArtists();
}
}
})
.state('root.artist', {
url: '/artist/:slug',
views: {
'[email protected]': {
templateUrl: appHelper.views+'/artistHeader.html',
controller: 'ArtistController as artistVm',
},
'[email protected]': {
templateUrl: appHelper.views+'/artist.html',
controller: 'ArtistController as artistVm',
}
},
resolve: {
artist: function($stateParams, dataService) {
return dataService.getArtist($stateParams.slug);
}
}
});
}]);
Fin qui, tutto bene. Ma ecco il trucco. Durante le transizioni voglio animare tutti i ui-view
s come uno. Per rendere le cose un aspetto coeso nel mio caso (è un'animazione dissolvenza) vorrei metterle in un div wrapping e fare in modo che il div diventi dissolvenza/dissolvenza (farlo su ogni diverso ui-view
causerà tutti i tipi di bruttezza).
Qual è la migliore pratica in questo scenario?
Li ho avvolti in un ui-view
e lo collego in qualche modo nello $stateProvider
(nidificato ui-view
s?). Ci sono altri modi per farlo? Posso ascoltare $stateChange
e applicare classi al mio wrapper come ngAnimate
con un ui-view
? (svanire poi attendere fino a quando non svanisce completamente con una risoluzione riuscita prima di dissolversi).
Dai miei sforzi su Google sembra che ui-view
sia molto preferito quando si gestiscono le animazioni del tipo di transizione.
Le animazioni negli eventi '$ stateChangeStart' e' $ stateChangeSuccess' hanno alcuni effetti collaterali, quindi evitali (al momento). Fino a quando l'ui-router non avrà un modo migliore per gestire la promessa di transizione oltre alle animazioni di 'event.preventDefault()' tramite JS sarà complicato. Eseguire tre 'ui-view' e animarli tutti in modo sincrono non dovrebbe essere un problema attraverso il puro CSS. Dai uno sguardo alla sezione delle domande frequenti sugli ui-router, c'è una sezione dedicata all'animazione delle transizioni. –
Mentre l'animazione è sincrona, causa problemi con il disegno poiché l'intestazione '' è fissata nella parte superiore della finestra durante lo scorrimento. Quando inizia la dissolvenza, rivelerà il contenuto di 'main' sotto il quale non è desiderato. Con un wrapper questo ovviamente non è un problema in quanto svanirà come un singolo elemento .. – INT