Я хотел бы иметь возможность настраивать и отключать функции для представлений внутри EmberJS, для этого примера я скажу, что отображение журналов, которые выбираются через AJAX каждые 5 секунд, но это проблема, с которой я сталкиваюсь довольно часто
Я создал здесь метод switchView, который будет обрабатывать события setup / teardown, однако сейчас он не может сделать себя недействительным для отображения обновленной информации.
Em.Application.create({
wrapper: $('#content'),
currentView: null,
ready: function() {
this._super();
this.self = this;
Em.routes.add('/log/', this, 'showLogs');
Em.routes.add('*', this, 'show404');
},
switchView: function(name, view) {
if (this.currentView) {
$(document.body).removeClass('page-' + this.currentView.name);
if (this.currentView.view.unload) {
this.currentView.view.unload();
}
this.currentView.view.remove();
}
if (name) {
$(document.body).addClass('page-' + name);
}
if (view.load) {
view.load();
}
view.appendTo(this.wrapper);
this.currentView = {name: name, view: view};
}
});
var LogView = Ember.View.create({
templateName: 'logs',
logs: [],
load: function() {
var self = this;
this.interval = setInterval(function() {
self.fetchLogs.apply(self);
}, 5000);
this.fetchLogs();
},
unload: function() {
clearInterval(this.interval);
},
fetchLogs: function() {
var self = this;
$.get('/logs', function(data) {
self.logs = data.list;
});
}
});