2012-09-15 16 views
5

için bağlayıcı değildir ben: o zamanOmurga olaylar benim görüşleri birinde dom elemanı

events: { 
    'click .tab': 'doSomething', 
}, 

:

doSomething: function(){ 
    ... 
}, 

Bu benim görünümlerinde yinelenen bir yapıdır, ama nedense 'doSomething için Bu görünümdeki tıklama tarafından işlev tetiklenmiyor.

Etkinliğe ne zaman öğeler bağlı?

Bu hata ayıklama konusunda ipuçları var mı?

cevap

6

Temsilci, görüntü yapıcısının sonundaki delegateEvents yönteminde gerçekleşir.

http://documentcloud.github.com/backbone/docs/backbone.html#section-144

this dönmeden önce renderthis.delegateEvents() arayarak manuel deneyin. initialize veya render yöntemlerinde this.el ile omurganın beklemediği bir şekilde ilerliyor musunuz? Burada keman

+1

Hm, render'deki dönüşten önce this.delegateEvents() yöntemini çağırmayı denedim, ancak hala olayları bağlamıyor. Ayrıca, bu başlatma veya render içinde içinde bu ile uğraşmak değilim. Çalışılan tek şey var deniyordu ki = bu; Bu $ ('sekmesi. ') üzerine (function()' klik') {that.doSomething (;})..; başlatma, ama bu kötü formu gibi hissediyor ... – captDaylight

+0

Ben de el ya da el ile uğraşmadı, ama benim olayım için delegateEvents ekleme olay bağlama sabit. – Duke

10

linki: seçici belirtilmemesi http://jsfiddle.net/7xRak/

olay görünümün kök elemanı (this.el) bağlı neden olur. senin class="tab" olduğu görüşleri DOM öğesi this.el o zaman o zaman sen olayı bağlamak gerekir

events : { 
    'click' : 'dosomething' 
} 

olarak ve

<div class="tab"> 
    <span class="inner"></span> 
</div> 

gibi this.el iç elemanı için olay bağlamak gerekir anlamına geliyorsa

,

events : { 
     'click' : 'dosomething' 
     'click .inner' : 'onInnerClick' 
    } 

belge: http://backbonejs.org/#View-delegateEvents

+2

Tam olarak yukarıda gösterdiğim şey bu modelin farkındayım. Söylemeye çalıştığım şey, bu nedenin bir nedenden dolayı çalışmamasıdır, bu yüzden olay delegasyonunun hatalarını ayıklamanın bazı yolları nelerdir? – captDaylight