AngularJS自定义动画指令

时间:2015-07-24 00:56:19

标签: javascript html css angularjs

让我们说我正在创建一个名为' shakeIt 的指令。当发出信号时,该指令应该为它所应用的元素添加一个类,在动画结束后,它应该删除该类。

最好的方式是向"摇晃" (添加课程)不使用事件(我不喜欢使用事件,除非它是一个意图在全球广播/发布的事件)。

谢谢:)

2 个答案:

答案 0 :(得分:2)

使用示波器上的属性来跟踪动画的状态。然后将属性传递给您的指令:

<div shake-it="myScopeProp" duration="4000"></div>

这是指令的样子:

app.directive('shakeIt', ['$timeout', function($timeout){
  return {

    link: function($scope, $ele, $attr){
      $scope.$watch($attr.shakeIt, function(shaking){
        $ele.toggleClass('someClass', shaking);

        if(shaking){
          $timeout(function(){
            $scope[$attr.shakeIt] = false;
          }, $attr.duration);
        }
      });
    }
  }
}]);

答案 1 :(得分:1)

为什么要在Angular提供ngClass指令时创建指令。

在你的控制器中,有一个可以摇动它的模型。

app.controller('ctrl', function($scope) {
  $scope.shakeIt = false;
});

在HTML中,

<p ng-class="{someClass : shakeIt}"> I'm shaking </p>

现在,您可以通过将模型值更改为 true 来控制何时摇动它。 动画完成后,将值更改为 false