我正在研究一個包含ItemView
元素的ItemListView
的應用程序。在我的ItemListView
中,我使用jQuery .each()
方法遍歷項目集合並將它們呈現爲列表元素。在循環內的Backbone.js視圖中訪問方法
我已經完成了所有部分,除了將li
元素實際附加到包含ul
的元素之外。難點在於我的.each()
循環內部訪問ItemListView.appendItem
方法。我試過使用this.appendItem
和self.appendItem
,但在循環內this
是item
和self
是window
對象。
這就是我現在所擁有的:
ItemListView = Backbone.View.extend({
el: '#item-rows',
initialize: function() {
this.collection = new Items();
this.render();
},
render: function() {
$.each(this.collection.models, function (i, item) {
var itemview = new ItemView({ model: item });
this.appendItem(itemview); // this refers to the item, so appendItem is undefined
});
},
appendItem: function (itemView) {
$(this.el).append(itemView.render().el);
}
});
var itemlistview = new ItemListView;
我敢肯定,上下文問題是唯一的問題,因爲我已經被他們輸出到控制檯,並檢查了其他部分的這他們看起來很好。
我錯過了什麼?
哈,是你的
appendItem
功能將工作,忘了關於那個技巧。謝謝! – 2012-02-09 03:49:26把這個臨時變量稱爲「那個」是很普遍的。 – knub 2012-02-09 12:00:52
然而,更好的做法是在@rfunduk發佈的答案中正確設置上下文 – 2012-06-12 19:23:33