警告: 私はバックボーンの初心者です。
コレクション内のすべてのモデルを反復処理してレンダリングしています。簡単ですが、これがどのように機能するかをよく理解したいと思いました。これが私が持っているものです -
モデル:
File = Backbone.Model.extend({});
コレクション
Folder = Backbone.Collection.extend({ model: File });
モデルビュー
FileView = Backbone.View.extend({
initialize: function() {
_.bindAll(this, 'render');
this.render();
},
render: function() {
this.template = _.template(document.getElementById("fileTemplate").innerHTML);
this.$el.html(this.template({ fileName: this.model.get("FileName") }));
}
})
コレクションビュー
FolderView = Backbone.View.extend({
initialize: function () {
_.bindAll(this, 'render');
this.render();
},
render: function () {
_(this.collection.models).each(function(file) {
var fileView = new FileView({ model: file});
this.$el.append(fileView.el);
},this); <--???
}
});
これは完全に正常に機能します。私の質問は、FolderView の _.each に関するものです。thisを each ループに戻す必要があるのはなぜですか? thisを渡さないと、コレクションではなくウィンドウ オブジェクトが参照されます。渡す必要があることはわかっていますが、理由がわかりません。