Backbone.js: come ottenere l'indice di un modello in una raccolta Backbone?


119

C'è un modo per trovare l'indice di un modello all'interno di una collezione?

Diciamo che in una vista abbiamo un modello su cui stiamo lavorando, quel modello potrebbe sputare il suo indice all'interno della raccolta in cui si trova attualmente? Mi piacerebbe farlo perché voglio accedere al modello sopra o sotto il target attuale.

In altre parole c'è qualcosa come:

index = this.model.index
modelAbove = this.collection.at( index-1 )

I miei dati sono un insieme annidato, quindi posso solo fare una ricerca sulle colonne "lft" o "rgt", ma non volevo reinventare la ruota se Backbone ha già queste informazioni disponibili.

Risposte:


201

sì, backbone fornisce l'accesso a molti metodi underscore.js su modelli e raccolte, incluso un indexOfmetodo sulle raccolte. fornisce anche un atmetodo come quello che hai mostrato.

var index = this.collection.indexOf(this.model);
var modelAbove = this.collection.at(index-1);

2
Grazie per il chiarimento! Sai, sarebbe fantastico se il .collectionmembro fosse esplicitamente elencato nei documenti per Model...
aaaidan

4
Non riesco a farlo funzionare durante una initializechiamata. Qualche idea su come avrei potuto farlo funzionare?
Aakil Fernandes

Anche questo attraverso di me per un giro. 'indexOf' si trova sotto Collezioni> Metodi di sottolineatura nel menu a sinistra, quindi non è in bella vista.
Jeffpowrs

@ Jeffpowrs È anche strano, perché indexOf, nella documentazione del trattino basso, è una funzione array, mentre un'altra funzione array, findIndex, non funziona con le raccolte.
Joshua Taylor
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.