我有一个只使用 jQuery 的简单动画:
jQuery(document).ready(function($) {
$('.right-block').on('click', 'chevron', function() {
if ($('.activity').hasClass('extended')) {
$('.activity').removeClass('extended').addClass('normal');
$('.extended-block').slideUp();
$('footer').fadeOut();
} else {
$('.activity').addClass('extended').removeClass('normal');
$('.extended-block').slideDown();
$('footer').fadeIn();
}
});
});
如果你喜欢,你可以在这里看到它:http: //cdpn.io/3bfea533af106c9bb601626be55eb3c1
当我尝试在 Ember 中做同样的事情时,事情变得有点有趣。动画开始,它反转,它重新启动,等等。它通常在很多来回之后完成,但状态转换不能保证它可能最终处于与您开始时相同的状态。
我的 Ember 组件如下所示:
App.ActivityWidgetComponent = Ember.Component.extend({
actions: {
toggleWidgetState: function() {
var self = this;
this.$('.right-block').on('click', 'chevron', function() {
Ember.run.next(this, function() {
if (self.$('.activity').hasClass('extended')) {
self.$('.activity').removeClass('extended').addClass('normal');
self.$('.extended-block').slideUp();
self.$('footer').fadeOut();
} else {
self.$('.activity').addClass('extended').removeClass('normal');
self.$('.extended-block').slideDown();
self.$('footer').fadeIn();
}
});
});
}
}
});
我偷偷地怀疑这与“运行循环”黑暗艺术有关。这就是为什么你看到我试图通过将 jQuery 添加到下一个运行循环来变得“棘手”的原因。这种变化似乎确实稍微改善了行为,但绝对没有解决它(我不确定这是否是朝着正确方向迈出的一步)。
任何帮助表示赞赏。