У меня есть несколько случаев, когда я выполняю анимацию с помощью Angular.
Они оба почти идентичны - все же один работает, а другой нет - я не могу понять, второй не делает.
Ниже, является директива, которая делает работу: - Это существенно оживляет кучу дочерних элементов в пределах element
dwApp.directive('introText', ['$animate', '$rootScope', function ($animate, $rootScope) {
return {
restrict: 'A',
scope: {
},
link: function (scope, element, attrs) {
scope.animationStarted = false;
$rootScope.$on('element-in-view', function (event, parent) {
if (!scope.animationStarted) {
scope.animationStarted = true;
$animate.addClass(element, 'slidein');
};
});
}
}
}]);
dwApp.animation('.slidein', function() {
return {
addClass: function (element, className) {
TweenMax.staggerTo(element.children(), 2.8, { opacity: 0.85, left: '5%', ease: Circ.easeOut }, 3);
}
}
});
Ниже, является директива, которая не работает - консоль что все работает, вплоть до console.log('performing animation');
- рассказывая мне, что функция просто не уволена, и я понятия не имею, почему ...
HTML - это просто
<mask></mask>
dwApp.directive('mask', ['$animate', '$rootScope', function ($animate, $rootScope) {
return {
restrict: 'E',
link: function (scope, element, attrs) {
console.log('mask directive')
$rootScope.showMask = function() {
console.log('showMask called - add class')
$animate.addClass(element, 'showmask');
};
// test
$rootScope.showMask();
}
}
}]);
dwApp.animation('.showmask', function() {
console.log('in showmask animation service');
return {
addClass: function (element, className) {
console.log('performing animation');
TweenMax.to(element, 1, { opacity: 1 });
}
}
});
При просмотре исходного кода HTML после $rootScope.showMask()
был назван я могу видеть, что маска теперь имеет класс
<mask class="showmask"></mask>
Кто-нибудь есть идеи, где я неправильно ?
Awesome! Большое спасибо. Наверное, на стороне заметки, вы знаете, как смотреть AngularJS и увольнять ли это событие, когда закончили компиляцию? – Darren
№ (еще нет: P) И, конечно же, он должен собираться каждый раз, когда он использует новый шаблон; так что это не делается после этого только один раз. Но 'timetime' без аргумента времени всегда срабатывает после выполнения текущего цикла' digest'. – towr
хорошо, отлично. большое спасибо снова. – Darren