【发布时间】:2015-07-05 03:27:19
【问题描述】:
我在这里有一个显示商品、尺寸、价格等的在线商店,我想为 .add-to-cart-btn <button> 添加动画,以便每次单击该按钮时,该按钮都会执行某种类型的动画片。我可以用 jQuery 来做到这一点:
$(document).ready(function() {
$('.add-to-cart-btn').on('click', function() {
$(this).addClass('bounce').delay(1000).removeClass('bounce');
});
});
但我正在尝试以“Angular 方式”做事,我认为我已经接近了。我在这里有一个指令:感谢This Post
angular.module('ForeverLeather').directive('animateTrigger', ['$animate', function ($animate) {
return function (scope, elem, attrs) {
elem.on('click', function (elem) {
scope.$apply(function() {
var el = angular.element(document.getElementsByClassName("add-to-cart-btn"));
var promise = $animate.addClass(el, "bounce");
promise.then(function () {
scope.$apply(function() {
$animate.removeClass(el, "bounce");
});
});
});
});
}
}]);
HTML
<div class="col-md-4 col-sm-6" ng-repeat="item in templateItems">
<div class="product-img-wrapper">
<img ng-src="{{item.src}}">
</div>
<h3 class="product-header">{{item.name}}</h3>
<p class="lead product-text">
{{item.description}}
</p>
<div class="product-btn-wrapper">
<select ng-options="size.size as size.text for size in item.sizes" ng-model="item.selectedItem.size"
class="form-control" ng-change="getPrice(item, item.selectedItem.size)">
<option value="" disabled>-- Select to view prices --</option>
</select>
<span class="text-left product-price">{{item.selectedItem.price | currency}}</span>
<button ng-click="addToCart(item.type, item.name, item.selectedItem.size);"
class="btn btn-lg btn-success add-to-cart-btn animated" animate-trigger>
<i class="fa fa-cart-plus"></i> Add To Cart
</button>
</div>
</div>
这行得通..好吧,我的问题是
var el = angular.element(document.getElementsByClassName("add-to-cart-btn")); 总是在页面上找到具有此类名称的第一个按钮,我需要将其更改为:
var el = angular.element(elem); // invalid
var el = angular.element(this); // invalid
这样我就在当前点击的元素而不是页面的第一个元素上执行动画。
【问题讨论】:
标签: javascript angularjs animation jqlite