Backbone.js: Wie erhalte ich den Index eines Modells in einer Backbone-Sammlung?


119

Gibt es eine Möglichkeit, den Index eines Modells in einer Sammlung zu finden?

Nehmen wir an, wir haben ein Modell, an dem wir arbeiten. Könnte dieses Modell seinen Index innerhalb der Sammlung ausspucken, in der es sich derzeit befindet? Ich möchte dies tun, weil ich über oder unter dem aktuellen Ziel auf das Modell zugreifen möchte.

Mit anderen Worten, gibt es so etwas wie:

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

Meine Daten sind verschachtelt, sodass ich nur nach den Spalten "lft" oder "rgt" suchen kann, aber ich wollte das Rad nicht neu erfinden, wenn Backbone diese Informationen bereits zur Verfügung hat.

Antworten:


201

Ja, Backbone bietet Zugriff auf viele underscore.js-Methoden für Modelle und Sammlungen, einschließlich einer indexOfMethode für Sammlungen. Es bietet auch eine atMethode, wie Sie gezeigt haben.

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

2
Danke, dass du das geklärt hast! Sie wissen, es wäre so toll, wenn das .collectionMitglied ausdrücklich in den Dokumenten für Model...
aaaidan

4
Ich kann das während eines initializeAnrufs nicht zum Laufen bringen. Irgendeine Idee, wie ich das zum Laufen bringen könnte?
Aakil Fernandes

Dies durch mich auch für eine Schleife. 'indexOf' befindet sich im Menü auf der linken Seite unter Sammlungen> Unterstreichungsmethoden, sodass es nicht in Sichtweite ist.
Jeffpowrs

@Jeffpowrs Es ist auch seltsam, weil indexOf in der Unterstrichdokumentation eine Array-Funktion ist, während eine andere Array-Funktion, findIndex, nicht mit Sammlungen funktioniert.
Joshua Taylor
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.