4
我有這種觀點的結構:接入功能
window.templateLoaderView = Backbone.View.extend({});
window.PopupView = templateLoaderView.extend({
initialize: function() {
this.PopupModel = new PopupModel();
this.event_aggregator.bind("tasks_popup:show", this.loadTaskPopup);
},
render: function() {
template= _.template($('#'+this.PopupModel.templateName).html());
$(this.el).html(template(this.PopupModel.toJSON()));
$('#'+this.PopupModel.containerID).html(this.el);
},
loadTaskPopup: function() {
this.PopupModel.loadTemplate("popupTask_templateHolder", "/js/templates/popup_task.html", "1", "container_dialog");
this.render();
}
});
window.TaskbarView = templateLoaderView.extend({
initialize: function() {
this.TaskbarModel = new TaskbarModel();
this.PopupModel = new PopupModel();
},
loadTaskbarPopup: function() {
this.event_aggregator.trigger("tasks_popup:show");
}
});
所以我想runf功能在一個視圖中形成另一個。據我所知,我需要以某種方式將它們綁定在一起。是否有可能在初始化函數中綁定它們?
我在這裏看到的例子:Backbone.js - Binding from one view to another?。他們創建兩個對象,並以某種方式綁定它們。
在此先感謝,
謝謝布萊恩,我試着去做了,你給我的方式,但我猜是因爲我的模型和視圖的結構,它沒有工作。 Firebug拋出我這個錯誤** this.PopupModel是未定義**,當我從TaskbarView訪問此功能。你知道我該怎麼解決它? – kaha
是的。你的新問題是無關的。你還沒有將'loadTaskPopup'函數綁定到你的對象的上下文中。看看我添加到PopupView.initialize中的'_.bindAll'調用。它會導致用對象的上下文('this')調用'loadTaskPopup',這樣函數可以解析'this.PopupModel'。 –
我也從地道的角度加入了,你不應該創建一個名爲'PopupModel'的屬性,而應該是'model'。你的模型加載一個模板也是很奇怪的......但是我會讓你自己找出一個模板。 :) –