Backbone.js: Jak uzyskać indeks modelu w kolekcji Backbone?

119

Czy istnieje sposób na znalezienie indeksu modelu w kolekcji?

Powiedzmy, że w widoku mamy model, nad którym pracujemy, czy ten model może wypluć swój indeks w kolekcji, w której obecnie znajduje się? Chciałbym to zrobić, ponieważ chcę uzyskać dostęp do modelu powyżej lub poniżej bieżącego celu.

Innymi słowy, czy jest coś takiego:

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

Moje dane to zestaw zagnieżdżony, więc mogę po prostu przeszukać kolumny „lft” lub „rgt”, ale nie chciałem wymyślać koła na nowo, jeśli Backbone ma już dostępne te informacje.

brian h
źródło

Odpowiedzi:

201

tak, szkielet zapewnia dostęp do wielu metod underscore.js w modelach i kolekcjach, w tym do indexOfmetody na kolekcjach. zapewnia również atmetodę, jaką pokazałeś.

var index = this.collection.indexOf(this.model);
var modelAbove = this.collection.at(index-1);
Derick Bailey
źródło
2
Dzięki za wyjaśnienie tego! Wiesz, byłoby wspaniale, gdyby .collectionczłonek został wyraźnie wymieniony w dokumentach dla Model...
aaaidan
4
Nie mogę uruchomić tego podczas initializerozmowy. Masz jakiś pomysł, jak mogę to zrobić?
Aakil Fernandes
To przeze mnie też dla pętli. „indexOf” znajduje się w obszarze Kolekcje> Metody podkreślania w menu po lewej stronie, więc nie jest widoczny.
Jeffpowrs
@Jeffpowrs Jest to również dziwne, ponieważ indexOf w dokumentacji podkreślenia jest funkcją tablicową, podczas gdy inna funkcja tablicowa, findIndex, nie działa z kolekcjami.
Joshua Taylor