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.

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);

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.