Я использую Ember.js.
Вот мой код:
App.AddView = Ember.View.extend({
classNameBindings: ['enter:enter:leave', 'dropped:dropped:leave'],
enter: false,
drop: function(event) {
event.preventDefault();
event.stopPropagation();
this.set('dropped', 'true');
this.set('text', 'Thanks');
}
});
И мой код Handlebars:
<script type="text/x-handlebars" id="add">
{{#view App.AddView id="drop"}}
{{msg}}
{{/view}}
</script>
Когда я бросаю на него предмет, он говорит "Спасибо" и становится синим. Замечательно.
То, что я хотел бы сделать, заключается в том, чтобы сохранить "Спасибо" и синий цвет в течение нескольких секунд, а затем вернуться к обычному цвету и сообщению, отображаемым на pageload. Я не мог найти примеров для этого в Ember.js, и все мои попытки просто использовать обычные jQuery способы делать что-то не работают.
Как я могу делать действия (применяя класс к элементу, изменяя текст элемента и т.д.) Тайм-аут в Ember.js?
Связывание классов произойдет в тот момент, когда привязка соответствует условию. Чтобы добиться эффекта задержки/анимирования, вам придется либо использовать анимацию CSS3 (может работать анимация ключевого кадра), либо использовать JQuery. Нет ничего плохого в использовании JQuery для анимации и других сложных манипуляций с DOM.
Изнутри представления вы можете получить доступ к объекту JQuery с областью с помощью this.$()
метода this.$()
. Вы можете сделать что-то вроде следующего:
App.AddView = Ember.View.extend({
classNames: ['defaultState'],
drop: function(event) {
event.preventDefault();
event.stopPropagation();
this.$().animate({ backgroundColor: "#7cc9ea"}, 400);
this.set('text', 'Thanks');
Ember.run.later(this, function(){
this.$().animate({ backgroundColor: "#FFFFFF"}, 400);
this.set('text', '');
}, 500);
}
});
Чтобы оживить цвет фона, вам понадобится плагин jquery-color
. Надеюсь это поможет! :)
Изменение: если вы хотите анимировать фон или иным образом манипулировать DOM вложенного элемента, вы можете получить к нему доступ, используя селектор, как обычно. просто помните, что он начинается с элемента вида в качестве корневого узла. например, this.$('#myNestedButton')