2015-06-13 1 views
2

При щелчке элемента я делаю анимацию для другого элемента (скажем, сестры), как получить callback от моего родного брата до scope?Как получить «обратный вызов» из другого завершения анимации элемента, а не из собственной директивы

здесь код:

var myApp = angular.module('myApp', ['ngAnimate']); 

myApp.controller('count', function($scope) { 
    $scope.flag=true; 
    $scope.animate = function() { 
     $scope.flag = !$scope.flag; 
    } 
}); 

DEMO

+0

Я видел, что уже. но это не слышит обратный вызов от другого элемента. – 3gwebtrain

ответ

4

$animate сервис может быть использован для обработки enter и leave обратных вызовов.

Вы использовали ng-if, чтобы показать/скрыть содержимое в вашем примере, но ng-if не имеют крючков для передачи обратного вызова в. Таким образом, вы должны написать свою собственную директиву (скажет animated-if) и предоставить пользовательские крючки (animated-if-leave-callback и animated-if-enter-callback).

Чтобы запустить событие после нг-отпуска, используйте $animate.leave(element, scope.leaveOnClick)

ВВЕСТИ один немного сложнее, не вызвать обратный вызов на начальной загрузке директивы.

var callback = !oldValue && $scope.animatedIfEnterCallback ? $scope.animatedIfEnterCallback : (function() {}); 
$animate.enter(clone, $element.parent(), $element, callback); 

Вот enter link description here обновленный plunkr

- source

+0

Хорошо. Но делать только анимацию css, почему так собрано в agularjs? как предположение, что неправильно использовать 'jquery' только в анимационной части в угловом? – 3gwebtrain

+1

Нет ничего плохого в использовании jQuery для анимации в угловых приложениях. Infact, использование jQuery также упоминается в угловом «[site] (https://docs.angularjs.org/tutorial/step_12) для богатых анимаций. С другой стороны, анимация css, основанная на «переходы» и «ключевые кадры», более плавная, легкая и помогает избежать дополнительных зависимостей. – nalinc

Смежные вопросы