2012-02-07 7 views
6

Omurgalı Koleksiyonum var. Sunucumdan yeni öğeler almak ve bunları koleksiyona eklemek için fetch({add:true}) kullanıyorum.Omurga koleksiyonuna eklenen bir öğenin dizinini getirme yoluyla nasıl alabilirim?

Koleksiyonun add etkinliğine bir dinleyici işlevini bağlıyorum. Öğenin koleksiyona eklendiği dizini almak için bu işlevi beğenirim.

Backbone’s documentation for Collection.add

“Bir koleksiyonun "add" olayı dinlerken bir geri arama iseniz, options.index size modeli koleksiyonuna eklenmekte olduğu en endeksi söyleyecektir.” Diyor

Ben görünüyor argümanları giriş yaptıktan dinleyicim işlevine konsola iletilecek ve onlara bir göz attı. Anlayabildiğim kadarıyla, ilk argüman eklenmiş, ardından sunucudan geri geldiğinde tutmak için oluşturulmuş geçici bir koleksiyon nesnesi. index özelliğinde bir nesneye sahip değilim.

Öğenin koleksiyona eklendiği dizini nasıl alabilirim?

cevap

8

Gelecekte bunu okuyan herkes için, NOT: sürüm 0.9.9'dan beri, options.index artık ayarlanmamıştır. Değişiklik:

Eklenti performansını artırmak için options.index artık add olay geri bildirimi içinde ayarlanmayacaktır. collection.indexOf(model), bir modelin indeksini gerektiğinde almak için kullanılabilir.

+0

Harika şeyler, güncel bir cevap eklemek için teşekkürler. –

+0

+1 Bunu güncellemek için teşekkürler. Çok yararlı. –

2

Kontrol senin bağlama işlevine üçüncü argüman, bu

var c=new Backbone.Collection(); 
c.bind("add",function(model,collection,opts){ 
    console.log(opts); 
}); 

c.add({}); 
c.add({}); 

Edit endeksi özelliğini içermelidir: Sadece Backbone 0.5.3 kontrol ve options.index sürümünde yalnızca görünüyor 0.9

+0

Aha! Evet, tabiki - Üçüncü argümana bakmıştım, ama indeks sıfır olarak ayarlandığından başka bir şey olduğunu düşünmüştüm. Boş bir koleksiyona yalnızca bir öğe eklediğimi test ettiğimi unutmuştum, dolayısıyla endeks sıfır olurdu. Mükemmel, şerefe. –