sday
sday

Reputation: 1051

fa-animate-enter what am I missing?

Pretty sure I have some fundamental mis-understanding of how/when fa-animate-enter is invoked. The following code works if you click on the box, it scales, but I was expecting that when the fa-view becomes active, it would also call the fa-animate-enter rather than necessitating a click. When a view becomes active, how do I call animateScale_enter()?

http://plnkr.co/edit/r2OSonPSvAQREAHvns7F

  <fa-view       fa-animate-enter="animateScale_enter()"
                 fa-animate-leave="animateScale_leave()"
                 fa-animate-halt="animateScale_halt()"  >
    <fa-modifier fa-origin="[0.5, 0.5]"
                 fa-align="[0.5, 0.5]"
                 fa-scale="scale.get()"
                 >
        <fa-surface fa-background-color="'#dc322f'"
                    fa-size="[100, 100]"
                    fa-click="animateScale_enter()"
                    >{{text}}
        </fa-surface>
    </fa-modifier>
  </fa-view>    

.js

<script>
  var app=angular.module('MyApp', ['famous.angular'])
   .controller('MainController', 
     function($scope, $famous) {

        var Transitionable = $famous['famous/transitions/Transitionable'];
        var SpringTransition = $famous['famous/transitions/SpringTransition'];
        Transitionable.registerMethod('spring', SpringTransition);

        $scope.viewType="view2";

        $scope.text="Scale=[1,1,1], click";
        $scope.scale = new Transitionable([1, 1, 1]);

        $scope.animateScale_enter = function() {
          console.log("enter");
          $scope.text="Scale=[2,2,1], enter";

          $scope.scale.set([2, 2, 1], {
            method: 'spring',
            period: 750,
            dampingRatio: 0.3
          });
        };          
        $scope.animateScale_leave = function() {
          console.log("leave");
        };          
        $scope.animateScale_halt = function() {
          console.log("halt");
          scope.transform.halt()
        };          
    }
  );
</script>

Upvotes: 0

Views: 237

Answers (1)

sday
sday

Reputation: 1051

Apparently it is connected to ng-repeat, and from what I gather, anything that forces a dom update... ??

So just adding a dummy ng-repeat to the fa-view seems to make it work.

<fa-view     ng-repeat="x in {x:1}"
             fa-animate-enter="animateScale_enter()"
             fa-animate-leave="animateScale_leave()"
             fa-animate-halt="animateScale_halt()"  >

I hope someone can give me a better way to do this. I just feel dirty doing it this way.

Upvotes: 0

Related Questions