So just to clarify, my questions are: 

   1. With ngAnimate added, why does ng-class="{selected: isSelected}" stop 
   working, while class="child {{isSelected ? 'selected' : ''}}" works?
   2. Is there any way we can reduce the number of calls though to 
performAnimation 
   or stop them completely when we've explicitly disabled animation within 
   the widget.


On Wednesday, 3 December 2014 13:21:28 UTC, Derek Donnelly wrote:
>
> I’ve noticed a problem with ng-class not adding the selector to the 
> element when ngAnimate is added to the project. 
>
> I’ve a UI widget (directive) that is made up of other child directives. A 
> child template example:
>
> <div class="child" ng-class="{selected: isSelected}"><span>Is selected? 
> {{isSelected}}</span></div>
>
> The widget is destined for use in a project that’s using ngAnimate, 
> however I don’t want ngAnimate touching the widget or it’s children, so the 
> root directive of the widget has the following in its post link function:
>
> $animate.enabled(false, element);
>
> This disables animations for it and all its children. With this in place, 
> as expected none of the typical ng-animate related class selectors are 
> being added to the child elements during interaction. However within 
> angular-animate.js, performAnimation is still called many times for these 
> children until it backs out when it checks the result of 
> animationsDisabled(element, parentElement). It’s probably worth mentioning 
> that these children exist within two levels of ngRepeats, but I don’t 
> believe that is anything to do with it.
>
> When selected, the children display *Is selected? true*, and when they 
> are not, they display *Is selected? false*. However when selected the 
> selected selector is not being added to the element classes. This only 
> occurs when ngAnimate is added to the project, without it everything works 
> as expected. I can work around this issue by not using ng-class, and 
> writing the template like this…
>
> <div class="child {{isSelected ? 'selected' : ''}}"><span>Is selected? 
> {{isSelected}}</span></div>
>
> …but I don’t really like this. My guess is it’s something to do with the 
> watchers in ngClass not firing with ngAnimate in the mix, and with the 
> children printing out is selected and from debugging I know the value of 
> isSelected is correct on the scope. 
>
> Not that it’s needed, but even if I add a timeout and call $scope.$appy 
> again after a short delay, it doesn’t make any difference.
>
> Any ideas what’s going on here?
>
> Tried multiple versions of angular and angular-animate, no joy, but right 
> now this project is using 1.3.0-rc.5.
>

-- 
You received this message because you are subscribed to the Google Groups 
"AngularJS" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/angular.
For more options, visit https://groups.google.com/d/optout.

Reply via email to