L'esperienza che sto cercando di creare è quella in cui viene caricata per la prima volta un'immagine di sfondo, quindi viene attivata un'animazione per dissolvere l'elemento a cui è collegata. Lo sto facendo in AngularJS usando ngAnimate e waitForImages. In particolare, ho il seguente vista nel mio <body>
:
<div ng-view="" ng-class="pageClass">
<br>
<br>
<br>
<h1 id="loading-text">Loading...</h1>
</div>
Dove pageClass
è impostato su landing-page
dal $routingProvider
e la seguente combinazione di controllo e di animazione suppone di darmi il risultato desiderato:
myModule.controller('LandingPageCtrl', ['$timeout', '$animate', function ($timeout, $animate) {
$animate.on('enter', angular.element('.ng-scope'), function (element) {
console.log('cool it fired!');
});
}]).animation('.landing-page', ['$animateCss', function ($animateCss) {
return {
enter: function(element, doneFn) {
console.log('waiting...');
element.waitForImages(true).done(function() {
console.log('loaded the image!');
return $animateCss(element, {
event: 'enter',
structural: true
});
});
}
};
}]);
E ecco i miei corsi SASS (scss):
.landing-page {
&.ng-enter {
transition: opacity 1s;
-webkit-transition: opacity 1s;
}
&.ng-leave {
transition: opacity 3s, left 1s ease;
-webkit-transition: opacity 3s, left 1s ease;
}
&.ng-enter,
&.reverse.ng-leave-active {
opacity: 1;
left: 0;
}
&.ng-enter-active,
&.ng-leave,
&.reverse.ng-enter-active,
&.reverse.ng-leave {
opacity: 0;
left: 0;
}
&.ng-leave-active,
&.reverse.ng-enter {
opacity: 0;
left: -100%;
}
}
Il comportamento che sto vivendo è che dopo che il testo Loading...
scompare, ottengo waiting...
nella console con la visualizzazione simultanea dell'elemento con l'immagine di sfondo non caricata completata, quindi cool it fired!
. Ho setacciato i documenti $ animate e $ animateCss per gli indizi e mi sembra che li sto usando correttamente e che non funzionano come descritto. Se si suppone che $animate.on('enter',...)
venga attivato dopo l'animazione di inserimento, perché viene attivato prima del log della console loaded the image!
? Forse mi manca qualcosa di ovvio visto che ho visto questo pezzo di codice per troppo tempo ...