我希望能够为EmberJS内部的 View 设置和拆卸功能,在此示例中,我将说显示每5秒通过AJAX获取的日志,但这是我遇到的很多问题
我在这里创建了一个switchView方法,该方法将处理设置/拆卸事件,但是现在它不能使其自身无效以显示更新的信息。
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;
});
}
});
最佳答案
我不清楚您要什么,但您应该研究willInsertElement
,didInsertElement
和willDestroyElement
。这些都相对于 View 元素从DOM中的插入和删除而被称为。