У меня есть простая анимация, которая работает с использованием только JQuery: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 хотя все становится немного забавным. Анимация начинается, она меняет направление, перезапускает и т. Д. Она часто заканчивается после многого и задерживается, но переход состояния не гарантируется, он может оказаться в том же состоянии, в котором вы начали.
My Ember Component выглядит так: :
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 в следующий цикл цикла. Это изменение, похоже, немного улучшило поведение, но это определенно не решило его (и я не уверен, что это был шаг в правильном направлении).
Любая помощь приветствуется.
Ok, У меня уже было действие. Поэтому в основном вы говорите, что удалите событие jQuery click, потому что уже есть Ember. Делает здравый смысл. – ken
Да. С помощью обычного jquery вы используете '$ (sel) .on ('click', handler)', но в ember вы будете использовать действия. Документация находится здесь http://emberjs.com/guides/templates/actions/ –
Да, это имеет смысл, я просто не был достаточно осторожен. Я начинаю видеть вещи в свете Ember, но моя уверенность все еще не полностью там, поэтому я догадываюсь и не вижу вещей, которые я обычно делал. Я ожидаю, что это наполнится в течение следующих нескольких недель. В любом случае спасибо за помощь в получении правильного ответа. – ken