Slide 1

Slide 1 text

AngularJS LT DirectiveにngAnimateをつけよう

Slide 2

Slide 2 text

自己紹介 吉田徹生(よしだてっせい) @teyosh

Slide 3

Slide 3 text

AngularJS使ってますか? 11月に1.2が公開されました。

Slide 4

Slide 4 text

1.2 追加で待望のngAnimateが公 式モジュールとして追加されま した。

Slide 5

Slide 5 text

Extrasのディレクトリ

Slide 6

Slide 6 text

ngAnimateの基本 ngAnimateを読み込む angular.module("mainAnime", ["ngAnimate"])

Slide 7

Slide 7 text

用意してされているng-* ng-repeat ng-show ng-hide ng-if ng-view ng-include

Slide 8

Slide 8 text

例 : ng-repeat ng-repeat対象の配列に追加削除した際にアニ メーションを付ける
{{item}}

Slide 9

Slide 9 text

CSS3でアニメーション .smain-animation {left : 100px; position:relative; -webkit-transition:0.5s linear all;} .smain-animation.ng-enter, .smain-animation.ng-leave.ng-leave-active {left:-100px;} .smain-animation.ng-enter.ng-enter-active, .smain-animation.ng-leave { left:100px; }

Slide 10

Slide 10 text

JavaScriptでアニメーション .animation('.main-animation', function(){ return { enter: function(element, done){ $(element).css({left : -100}); $(element).animate({left : 50},done); }, leave : function(element, done){ $(element).animate({left : 0},done); } }; })

Slide 11

Slide 11 text

Directiveにアニメーション もちろん自作のDirectiveにもア ニメーションを設定できます。

Slide 12

Slide 12 text

$animateで設定 $animateで実行されます。 $animate.enter(element, parent, after, callback); $animate.leave(element, callback); $animate.move(element, parent, after, callback); $animate.addClass(element, className, callback); $animate.removeClass(element, className, callback);

Slide 13

Slide 13 text

こんなかんじでDirective .directive("mainAnimation", ["$animate", function($animate){ return { restrict: "A", template: "enterleave", link: function(scope, element, attr){ scope.spans = [];

Slide 14

Slide 14 text

続き enter追加 scope.enteranime = function(){ var $test = angular.element("
test
"); var $after = angular.element(element.children()[element.children().length- 1]); $animate.enter($test, element, $after, function(){ scope.spans.push($test); }); };

Slide 15

Slide 15 text

続き leave追加 scope.leaveanime = function(){ if(scope.spans.length){ $animate.leave(scope.spans.pop()); } }; } }; }])

Slide 16

Slide 16 text

出来たのはこちら http://plnkr. co/edit/MlEVCWFvEWWAMdZkPcSV? p=preview