我在理解Backbone子視圖中的事件綁定時遇到問題。我的視圖被定義爲如下:Howto綁定Backbone子視圖中的單擊事件
TenantView = Backbone.View.extend({
events: {
"click": "setActive"
},
initialize: function() {
this.parentEl = this.options.parentEl;
return this.render();
},
template: new EJS({
url: '/scripts/templates/tenant.ejs'
}),
render: function() {
$(this.parentEl).children('ul').append(this.template.render(this.model));
return this;
},
setActive: function(event) {
return this.model.set('active', true);
}
});
該模板簡單地由一個li
的方含一個a
。完成這種方式,點擊我的視圖上的事件沒有捕捉到,我的方法setActive
永遠不會被觸發。
當我通過el
屬性(如el: 'li'
)擴展我的視圖時,我的(2)個視圖中的一個視圖正常工作並觸發setActive
函數。第二種觀點根本沒有反應。如果我在視圖初始化期間忽略el
屬性,工作視圖的el
屬性指向li
,失敗視圖el
指向可在頁面中找到的第一個li
。
可以看出,當涉及到el
屬性的含義時,我完全失去了。
問題是,我怎麼能綁定一個點擊視圖到這個視圖setActive
函數?
任何人都可以啓發我嗎?
問候 菲利克斯
颶風,謝謝你的回答。事實上,這幾乎是我正在做的。 parentEl屬性指向CollectionViews el屬性(這是一個ul),以便我可以在ul中呈現我的ChildViews。在我的父級CollectionView中,我遍歷集合模型併爲每個模型創建一個ChildView實例。我有這種感覺,那種做法是完全錯誤的。 – GeorgieF
嗯,這就是我一直以來,對我來說工作得很好:) – Cyclone
閱讀[這](http://stackoverflow.com/questions/5624929/backbone-view-el-confusion)實際上解決了我的問題。看到我下面的評論。再次感謝您的意見。 – GeorgieF