Javascript I';我是一个有主心骨的初学者,它是如何在函数中传递arg的
我是一个backbone.js初学者,看看下面的一个例子,我想知道这个函数到底是什么:Javascript I';我是一个有主心骨的初学者,它是如何在函数中传递arg的,javascript,backbone.js,Javascript,Backbone.js,我是一个backbone.js初学者,看看下面的一个例子,我想知道这个函数到底是什么:appendItem,它传递参数:item,它在哪里以及如何传递参数 (function($){ var Item = Backbone.Model.extend({ defaults: { part1: 'hello', part2: 'world' } }); var List = Backbone.Collection.extend({ model: Item });
appendItem
,它传递参数:item
,它在哪里以及如何传递参数
(function($){
var Item = Backbone.Model.extend({
defaults: {
part1: 'hello',
part2: 'world'
}
});
var List = Backbone.Collection.extend({
model: Item
});
var ItemView = Backbone.View.extend({
tagName: 'li',
initialize: function(){
_.bindAll(this, 'render');
return this.render();
},
render: function(){
$(this.el).html('<span>'+this.model.get('part1')+this.model.get('part2')+'</span>');
return this;
}
});
var ListView = Backbone.View.extend({
el: $('body'),
events: {
'click button#add': 'addItem'
},
initialize: function(){
_.bindAll(this, 'render', 'addItem', 'appendItem');
this.collection = new List();
this.collection.bind('add', this.appendItem);
this.counter = 0;
return this.render();
},
render: function(){
var self = this;
$(this.el).append("<button id='add'>Add list item</button>");
$(this.el).append("<ul></ul>");
_(this.collection.models).each(function(item){
self.appendItem(item);
}, this);
return this;
},
addItem: function(){
this.counter++;
var item = new Item();
item.set({
part2: item.get('part2') + this.counter
});
this.collection.add(item);
},
appendItem: function(item){
var itemView = new ItemView({
model: item
});
$('ul', this.el).append(itemView.el);
}
});
var listView = new ListView();
})(jQuery);
(函数($){
var Item=Backbone.Model.extend({
默认值:{
第一部分:你好,
第二部分:“世界”
}
});
var List=Backbone.Collection.extend({
型号:项目
});
var ItemView=Backbone.View.extend({
标记名:“li”,
初始化:函数(){
_.bindAll(这是“呈现”);
返回这个.render();
},
render:function(){
$(this.el).html(“”+this.model.get('part1')+this.model.get('part2')+“”);
归还这个;
}
});
var ListView=Backbone.View.extend({
el:$(“正文”),
活动:{
'单击按钮#添加':'添加项'
},
初始化:函数(){
_.bindAll(这是'render','addItem','appendItem');
this.collection=新列表();
this.collection.bind('add',this.appendItem);
这个计数器=0;
返回这个.render();
},
render:function(){
var self=这个;
$(this.el).append(“添加列表项”);
$(this.el)。追加(“
”);
_(此.集合.模型).每个(功能(项){
自附项(项);
},这个);
归还这个;
},
附加项:函数(){
这个.counter++;
var item=新项();
item.set({
part2:item.get('part2')+this.counter
});
此.集合.添加(项);
},
附录项:功能(项){
var itemView=new itemView({
型号:项目
});
$('ul',this.el).append(itemView.el);
}
});
var listView=new listView();
})(jQuery);
事件侦听器this.collection.bind('add',this.appendItem)代码>处理这个问题
它基本上是说,当一个新项目被添加到集合中时,调用this.appendItem
。在封面下,主干调用this.appendItem
,并为您提供刚刚添加的项目
这是通过bindAll()
将函数绑定为侦听器来完成的。如果触发了所需的事件(add
,在您的情况下),将使用一些参数执行侦听器。对于这样的事件,第一个参数将是添加的模型,因此您将获得项。谢谢!我认为寻找文件总是一个好主意!没问题。。。很乐意帮忙!