gpt4 book ai didi

backbone.js - 了解 Backbone 集合上的 _.each

转载 作者:行者123 更新时间:2023-12-04 13:27:43 28 4
gpt4 key购买 nike

警告:我是一个 Backbone 新手。

我正在迭代我集合中的所有模型并渲染它们。然而,很简单,我想确保我很好地理解这是如何工作的。这是我所拥有的 -

模型:

File = Backbone.Model.extend({});

收藏
Folder = Backbone.Collection.extend({ model: File });

模型 View
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") }));
}
})

集合 View
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(list, iterator, [context]) Alias: forEach

Iterates over a list of elements, yielding each in turn to an iterator function. The iterator is bound to the context object, if one is passed. Each invocation of iterator is called with three arguments: (element, index, list). If list is a JavaScript object, iterator's arguments will be (value, key, list). Delegates to the native forEach function if it exists.

underscore docs#each


默认上下文是窗口对象。通过设置 this作为上下文,您正在制作 this在函数映射到 this函数被调用的地方。
有关此主题的引用,请参阅以下内容:
  • A bit about function contexts
  • underscore source for _.each
  • ForEach docs
  • Strict vs non-strict context
  • 关于backbone.js - 了解 Backbone 集合上的 _.each,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18254300/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com