2012-02-07 9 views
6

Ho una collezione Backbone. Sto utilizzando fetch({add:true}) per recuperare nuovi elementi dal mio server e aggiungerli alla raccolta.Come posso ottenere l'indice di un elemento aggiunto a una raccolta Backbone tramite fetch?

Ho associato una funzione listener all'evento add della raccolta. Mi piacerebbe che la funzione per ottenere l'indice in cui l'elemento è stato aggiunto alla collezione.

Backbone’s documentation for Collection.add dice “se sei un callback ascoltando l'evento di una collezione "add", options.index vi dirà l'indice a cui il modello viene aggiunto alla raccolta.”

ho collegato gli argomenti che sembrano da passare alla mia funzione listener alla console e ho dato un'occhiata a loro. Per quanto ne so, il primo argomento è l'elemento aggiunto, seguito da un oggetto di raccolta temporaneo creato per tenerlo quando è tornato dal server. Non mi sembra di avere un oggetto con una proprietà index.

Come posso ottenere l'indice a cui è stato aggiunto l'articolo alla raccolta?

risposta

8

A chiunque legga questo in futuro, NOTA: dalla versione 0.9.9, options.index non è più impostato. Dal registro modifiche:

Per migliorare le prestazioni di aggiunta, options.index non verrà più impostato nella chiamata all'evento add. collection.indexOf(model) può essere utilizzato per recuperare l'indice di un modello, se necessario.

+0

Grandi cose, grazie per aver aggiunto una risposta aggiornata. –

+0

+1 Grazie per l'aggiornamento. Molto utile. –

2

Controllare il terzo argomento alla funzione bind, dovrebbe contenere la proprietà Index

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

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

Edit: ho appena controllato Backbone 0.5.3 e sembrerebbe options.index è disponibile soltanto in versione 0.9

+0

Aha! Sì, certo: avevo esaminato il terzo argomento, ma pensavo che fosse qualcos'altro dato che l'indice era azzerato. Avevo dimenticato che stavo testando solo l'aggiunta di un oggetto a una collezione vuota, quindi ovviamente l'indice sarebbe zero. Eccellente, evviva. –

Problemi correlati