Javascript 主干JS:集合视图中表示模型的参数来自哪里?
我正在学习主干JS。虽然我觉得到目前为止我取得了很大的进步,但有一件事我不明白 采用以下集合视图:Javascript 主干JS:集合视图中表示模型的参数来自哪里?,javascript,backbone.js,Javascript,Backbone.js,我正在学习主干JS。虽然我觉得到目前为止我取得了很大的进步,但有一件事我不明白 采用以下集合视图: App.Views.Tasks = Backbone.View.extend({ tagName: 'ul', render: function() { this.collection.each(function(a) { var taskView = new App.Views.Task({model: a}); this.$el.append(taskV
App.Views.Tasks = Backbone.View.extend({
tagName: 'ul',
render: function() {
this.collection.each(function(a) {
var taskView = new App.Views.Task({model: a});
this.$el.append(taskView.render().el);
}, this);
return this;
}
});
其中,参数a
表示用于构建单个视图的对象。但是这个参数是从哪里来的呢
当然,我知道它来自传递到此视图的集合,但它为什么可以免费使用?在哪里定义/记录此参数可用?
每个
都是下划线中的一个方法。它接受回调——当前接受a
作为其参数的匿名函数。这个参数可以命名为任何名称,真的。它表示我们在每个特定迭代中迭代的该数组的特定元素。为了清晰起见,我通常喜欢给它命名为elem
或value
。一个较长的版本可能类似于我们当前不断迭代的这个集合的元素
如果改用for循环,则代码如下所示:
for (var i = 0; i < this.collection.length; i++) {
var taskView = new App.Views.Task({model: this.collection[i]});
this.$el.append(taskView.render().el);
}
for(var i=0;i
再看一次这行:
this.collection.each(function(a) {
each
针对集合中的每个模型调用一个函数a
被定义为方法的第一个参数,将表示特定的模型 您基本上是在询问下划线
实用程序库中的函数是如何工作的
它迭代集合中的每个项,并将其传递给回调函数。在此代码中,您将集合中的每个项目设置为App.Views.Task
的模型,并将其附加到UI元素,然后返回元素
下划线
是主干的一个依赖项,可以找到每个
的文档。每个
在此上下文中不是数组原型方法。这是一个下划线
实用函数。感谢您的澄清,您在我的代码中的意思是a
(或它的名称)是可用的,因为下划线的每个
函数都传递了它?a
实际上是您收藏中的一个项目。该参数的更好名称可以是task
或item
或itemInCollection
。将为集合中的每个项调用回调函数。因此,是的,每个
函数都会将其传递给回调函数!:)谢谢,现在我明白了!其实很简单!