2013-06-20 92 views
2

我已經開始使用Backbone。通過listenTo跟蹤骨幹事件

在學習Backbone時,我知道使用.listenTo而不是.on的優點是listenTo允許「對象跟蹤事件」。

我沒有得到這句話想說什麼。那麼我只能看到.on和.listenTo之間的區別是關於語法的。

回答

5

考慮兩個呼叫:

this.model.on('change', this.some_method); 
this.listenTo(this.model, 'change', this.some_method); 

在第一種情況:

  1. this.model知道有人在監聽'change'事件,但它不知道是誰。
  2. this不知道它在聽什麼,除非您明確跟蹤您所做的電話號碼爲on

在第二種情況:

  1. this.model知道有人在監聽'change'事件,但它不知道是誰。
  2. this知道它正在收聽來自this.model的事件。

所以是的,語法是不同的,但主要的區別是誰知道誰在傾聽:與on,只有聽到的東西知道有一個監聽器;與listenTo,聽衆也知道他們在聽什麼。

如果您想停止收聽活動,區別很重要。如果您使用的是on,那麼您必須保留自己的收聽列表,以便您可以off;如果您使用的是listenTo,那麼listenTo會跟蹤這一點,您可以簡單地使用stopListening

例如,View#remove看起來是這樣的:

remove: function() { 
    this.$el.remove(); 
    this.stopListening(); 
    return this; 
} 

,所以你可以調用view.remove(),它會自動清理您有任何事件綁定(只要你使用listenTo)和殭屍聽衆的機會大幅減少。

+0

O!我知道了。感謝您的指導。我在Backbone Home網站本身沒有找到這樣的細節。 –

+1

@iCyber​​netics:在有'listenTo'方法之前使用Backbone時,'listenTo'的效用更容易被看到。 –

+0

是的!獲取了Backbonejs.org提供的Change-log中的所有信息 –