0
var RowView = Backbone.View.extend({
tagName: 'li',
className: 'course-row',
events: {
"click .table-row": "rowClick" // problem here!
},
initialize: function() {},
template: _.template(tpl),
render: function() {
var rowStr = this.template({course: this.model});
$(this.el).append(rowStr);
},
rowClick: function (e) {
alert(e);
}
});
上面的代碼定義了一個Backbone Row視圖。我想創建並在表中呈現幾個幾行,所以我所做的:如何避免Backbonejs視圖中的雙重事件綁定?
data.forEach(function(rowData){
var row = new RowView({model: course, el: mountPoint});
row.render();
});
如果我創建2行,該事件被綁定兩次(2警報味精如果我點擊行) 3行3次。我通過在父視圖中定義事件來避免了這個問題,但是如果我真的需要在每一行附加事件處理函數,我該如何避免雙重事件標記問題?
在[此答案](http://stackoverflow.com/a/9502515/3585500)中有父/子視圖的一些策略。但也不要錯過[pub/sub answer](http://stackoverflow.com/a/9415369/3585500)。 – ourmandave
這不應該發生。你能創建一個[mcve] ..嗎? –
你的'RowView'中'tagName'和'className'的存在表明'RowView'創建了它自己的'el'。但是在這種情況下,一個簡單的'row.render()'不會在頁面上獲得任何東西。此外,雙重事件表明您將多個視圖綁定到相同的「el」。這些事情表明,這不是你真正的'forEach'循環。我錯過了什麼? –