2016-04-29 55 views
0

像觸發: -listenTo骨幹事件從在骨幹鑑於事件的散列我們有一個選擇指定的事件, 例的特定元素或視圖

events: { 
    "click .icon":   "open", 
    "click .button.edit": "openEditDialog", 
    "click .button.delete": "destroy" 
    } 

如何與實現這個listenTo

this.listenTo('Events','mouseenter .icon',callback) 

PS:我有多個部件(如按鈕,複選框),我有一個UI,其允許聽衆綁定到DOM的那些部件(一個降低組件交互)。他們點擊,的mouseenter等默認JavaScript事件處理並引發像點擊雙擊這樣的事情: -

Events.trigger('click',data); 

Events.trigger('dblClick',data); 

但我要綁定的聽衆只有特定的組件,因爲任何組件的mouseenter都會導致Events.trigger('mouseenter',data),因此禁止接收者監聽所有現有dom組件的mouseenter。

回答

2

我認爲你對來自Backbone.Events的DOM事件之間的混淆 - 它們是不一樣的。

事件散列僅適用於Backbone.View,並且指的是可以綁定到View中的事件處理程序方法的DOM事件。

listenTo()是Backbone.Events中的一種方法,可應用於在Backbone.Events中混合的任何對象。您的listenTo()方法中的第一個參數應該是在Backbone.Events中混合的對象。

+0

那麼,我應該如何綁定事件偵聽器(骨幹事件偵聽器),僅限於偵聽特定的視圖實例。我對每個實例都有唯一的id,但我不想在接收者端使用if循環來根據Id過濾出觸發器。使用if循環似乎是不正確的或種類的硬編碼方式。 – packetZ

+0

骨幹事件可以攜帶有效載荷。所以,如果你的視圖實例有一個viewId(例如),它可能會觸發一個包含viewId的事件有效載荷的事件。從監聽者的角度來看,事件處理程序將接收這個有效負載作爲參數,並且能夠在決定採取適當的操作之前檢查viewId的值。 –