11

ビュー内の初期化関数に「クリック」リスナーを配置することと、同じビューのイベント オブジェクトに配置することの違いがわかりません。どちらも DOM イベントをリッスンし、関数をトリガーしますよね? 違いは何ですか?

例えば:

var ViewName = Backbone.View.extend({  
    initialize: function(){  
        this.$el.on("eventName", this.functionName, this)  
    },  
    functionName: function(){  
        //whatever  
    }  
});

対:

var ViewName = Backbone.View.extend({  
    events: { "eventName": "fucntionName" }   
    },  
    functionName: function(){  
        //whatever  
    }  
});
4

1 に答える 1

15

あなたがするとき:

var ViewName = Backbone.View.extend({  
   initialize: function(){  
      this.$el.on("eventName", this.functionName, this)  
   },  
   functionName: function(){  
    //whatever  
   }  
});

ビューが削除されているときは、イベントを手動でアンバインドする必要があります。したがって、次のようにする必要があります。

var ViewName = Backbone.View.extend({  
   initialize: function(){  
      this.$el.on("eventName", this.functionName, this)  
   },  
   functionName: function(){  
    //whatever  
   },
   remove: function() {
      this.$el.off("eventName", this.functionName);
      Backbone.View.prototype.remove.apply(this, arguments);
   }  
});

ハッシュを使用するeventsと、ビューが削除されたときにバックボーンが委任解除イベントを処理します。これはすべて、Backbone.js 注釈付きソース のこのセクションで説明されています。

于 2013-10-04T17:43:37.790 に答える