2011-12-22 6 views
3

トリビアのビット。 ループ内でビューとモデルを作成し、カスタムイベントをそれらにバインドしようとしています。これまでのところすべてのgooが、私がオブジェクトで見つけたかったことは、イベントを起こしました。私は個別に直列にそれぞれにイベントを割り当てるために、他の長ったらしい方法がある知っているが、私は、より効率的な方法を探しています推測:バックボーンカスタムイベント:呼び出し元オブジェクトを取得する

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

コレクションは最適な場所ですのような物体がトリガーメソッドに2番目のパラメータとして含まれるべきこれをするこれは次のようなものです:

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. 
    } 

}); 
関連する問題