我正在构建一个小型应用程序,并且正在使用 AngularJS。在应用程序内部,我需要一个可折叠元素,使用 Twitter Bootstrap 就像在我的目标元素和触发器上添加库和一些标签一样简单。
但我试图不加载其他外部库,如 bootstrap 或任何其他库,所以我试图用 Angular 实现相同的行为:
$scope.collapse = function(target) {
var that = angular.element(document).find(target),
transitioned = {
'WebkitTransition' : 'webkitTransitionEnd',
'MozTransition' : 'transitionend',
'OTransition' : 'oTransitionEnd otransitionend',
'msTransition' : 'MSTransitionEnd',
'transition' : 'transitionend'
},
_transitioned = transitioned[ Modernizr.prefixed('transition') ],
height = that.outerHeight(true);
if (angular.element(that).hasClass("in")) {
that.height(0);
} else {
that.height(height);
};
that.on(_transitioned, function() {
that.toggleClass("in");
});
};
如您所见,我正在尝试转换高度(因为元素在高度上有转换),最后只添加类in
。但这不是很好,因为如果我在过渡端收听,它将在该元素内的任何过渡端触发。
我需要一些帮助,如何仅使用 angular 重写引导可折叠?我不需要 bootstrap 所具有的事件shown
,hidden
或者show
,hide
我只需要通过转换触发元素的简单折叠并保持我的元素高度动态(我不想要固定高度,否则我只会使用CSS 实现折叠)。我只需要确定正确的方向:)