ItemListView
のItemView
要素を含むアプリケーションを開発中です。私の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;
私はコンソールに出力することで、このの他の部分を検討してきたように、私は、コンテキストの問題が唯一の問題であることをかなり確信していると彼らは上品に見える。
私には何が欠けていますか?
ほら、ええ、忘れてしまいましたそのトリックについてありがとう! –
その一時変数 "that"を呼び出すことは実用的です。 – knub
そして、@ rfundukによって投稿された答えのように、文脈を正しく設定する方がよい –