2012-03-30 33 views
6

Gelişmekte olduğum bir Backbone uygulaması, her öğe için bir koleksiyona, bir modele ve ilişkili görünümlere sahip. Koleksiyonda ateşleme modelindeki omurga olayları (Çift ateşleme)

https://gist.github.com/2255959

Ben PostView tıklayın

, beklenmedik, herhangi bir bağlantı olmadan koleksiyonu olayı harekete.

Modele bir olayı bağlama ihtiyacım olduğunu düşündüm, o zaman bu koleksiyonda bir olay var. Durum böyle değil mi? Koleksiyon otomatik olarak devraldığı olaylar çocuk modellerini ateşledi mi?

Emin değilim, ancak iç içe geçmiş görünümlerle ilgili bir şey olduğunu düşünüyorum ve belki de olay yalnızca iç el yerine her iki yerde bağlanıyor. fine manual itibaren

cevap

14

:

kolaylık olması açısından, doğrudan koleksiyonu tetiklenecek bir koleksiyonda bir model üzerinde tetiklenir Herhangi bir olay.

Yani evet, toplama onun modellerinin tümü üzerinde olayları dinler ve bunları iletir. Örneğin

, böyle basit bir dizi vazgeçmiş:

class M extends Backbone.Model 

class C extends Backbone.Collection 
    model: M 

c = new C 
c.on('change', (model, opts) -> console.log('Change on collection')) 

olay işleyicisi tetikleyecek c.first().set(...) yapmak.

Demosu: Şu ters uygulanabilir eğer http://jsfiddle.net/ambiguous/wwjnK/

+1

biliyor musunuz? Bu nedenle bir koleksiyonda bir etkinliği tetikler ve daha sonra bu etkinliği koleksiyondaki her model nesnesine iletirim? – dombesz

+1

@dombesz: Bunu el ile yapmak zorunda olduğunuzu düşünüyorum ama koleksiyonlara karıştırdığım Underscore yöntemlerini hızlı bir astar yapmalı. –

+0

Modelde bir olayı tetiklediğimde aynı olayın koleksiyonda da tetikleneceğini öğrendim. – dombesz

İlgili konular