Backbone.js: Comment obtenir l'index d'un modèle dans une collection Backbone?

119

Existe-t-il un moyen de trouver l'index d'un modèle dans une collection?

Disons que dans une vue sur laquelle nous travaillons, nous avons un modèle, ce modèle pourrait-il cracher son index dans la collection dans laquelle il se trouve actuellement? Je voudrais faire cela parce que je veux accéder au modèle au-dessus ou en dessous de la cible actuelle.

En d'autres termes, y a-t-il quelque chose comme:

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

Mes données sont un ensemble imbriqué donc je peux juste faire une recherche sur les colonnes "lft" ou "rgt", mais je ne voulais pas réinventer la roue si Backbone a déjà cette information disponible.

brian h
la source

Réponses:

201

oui, backbone permet d'accéder à de nombreuses méthodes underscore.js sur les modèles et les collections, y compris une indexOfméthode sur les collections. il fournit également une atméthode comme vous l'avez montré.

var index = this.collection.indexOf(this.model);
var modelAbove = this.collection.at(index-1);
Derick Bailey
la source
2
Merci d'avoir clarifié cela! Tu sais, ce serait tellement génial si le.collection membre était explicitement répertorié dans la documentation pour Model...
aaaidan
4
Je ne peux pas faire fonctionner cela pendant un initializeappel. Une idée de la façon dont je pourrais faire fonctionner ça?
Aakil Fernandes
Cela à travers moi pour une boucle aussi. 'indexOf' est placé sous Collections> Méthodes de soulignement dans le menu de gauche, il n'est donc pas visible.
Jeffpowrs
@Jeffpowrs C'est aussi étrange, car indexOf, dans la documentation des traits de soulignement, est une fonction de tableau, alors qu'une autre fonction de tableau, findIndex, ne fonctionne pas avec les collections.
Joshua Taylor