Javascript I';我是一个有主心骨的初学者,它是如何在函数中传递arg的

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 });

我是一个backbone.js初学者,看看下面的一个例子,我想知道这个函数到底是什么:
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
    ,在您的情况下),将使用一些参数执行侦听器。对于这样的事件,第一个参数将是添加的模型,因此您将获得
    。谢谢!我认为寻找文件总是一个好主意!没问题。。。很乐意帮忙!