2011-12-22 43 views
3

只是有點瑣事; 我在一個循環中創建視圖和模型,然後試圖綁定自定義事件給他們。到目前爲止,所有的咕咕,但當我想找出與對象解僱的事件呢。我知道有其他更囉嗦的方式串聯單獨分配活動,每個人,但我想我正在尋找一種更有效的方式:骨幹自定義事件:讓呼叫者對象

initialize: function(args) 
    { 
     this.views = []; 
     this.models = []; 
     for(var i =0;i<args.items.length;i++) 
     { 
      this.models[i]  = new BasicContentModel({url:args.items[i].urlRoot+args.items[i].url}); 
      this.views[i]  = new BasicContentView({model:this.models[i],id:i,className:"tab-"+i}); 
      this.views[i].bind("updated",this.update,this) //<-- heres the bind 
     } 
     // blah blah 
    }, 
    update: function(args) 
    { 
     console.log("updating:",args) //<-- trying to get which one called the update 
    } 

這是否有道理?基本上我要記錄哪些視圖剛剛更新(向上冒泡排序的事情)

回答

5

對不起,我不認爲我可以刪除我的問題,由於缺乏點,但我剛剛找到了答案其他地方想,也許別人在未來可能會發現這個有用:

當你觸發對象應被列爲第二個參數,以觸發方法,像這樣

從BasicContentView

事件
this.trigger("updated",this) 
0

集合是一個完美的地方去做這個型的東西,它會是這樣的:

var myCollectionView = Backbone.View.extend({ 

    initialize: function() { 
    this.models = []; 
    this.collection.add(this.models); 
    this.collection.bind("add", this.addOne, this); 
    } 

    addOne: function(model_instance) { 
    var basicContentView = new BasicContentView({model:model_instance}); 
    this.$('ul').append(basicContentView); // if your basicContentView is an li for example. 
    } 

});