Расписание для каждого afterRender для просмотра
Я хотел бы запускать код каждый раз, когда представление отображается. Самое близкое, что я могу получить - это прослушать каждое свойство, которое может измениться, и явно запланировать что-то в цикле выполнения для afterRender
, но я бы хотел иметь такой же жизненный цикл, как afterRender
, Подход с использованием свойств становится хрупким, поскольку необходимо постоянно обновлять список свойств в зависимости от того, что может повлиять на рендеринг.
контроллер:
App.IndexController = Ember.Controller.extend({
count: 0,
actions: {
add: function() {
var count = this.get('count');
count += 1;
this.set('count', count);
}
}
});
Посмотреть:
App.IndexView = Ember.View.extend({
changed: function() {
Ember.run.scheduleOnce('afterRender', this.after);
}.observes('controller.count'),
after: function() {
console.log('after render', this.$('span').text());
}
});
Шаблон:
<button {{action "add"}}>add</button> <span>{{count}}</span>
http://emberjs.jsbin.com/wujogejeso/3/edit?html,css,js,output
1 ответ
Чтобы запланировать код afterRender
, вы можете использовать didInsertElement
крюк жизненного цикла вместо вашего changed
функция.
App.IndexView = Ember.View.extend({
didInsertElement: function() {
Ember.run.scheduleOnce('afterRender', this.after);
},
after: function() {
console.log('after render', this.$('span').text());
}
});