Backbone.js: Как получить индекс модели в Backbone Collection?


119

Есть ли способ найти индекс модели в коллекции?

Допустим, в представлении у нас есть модель, над которой мы работаем, может ли эта модель выдать свой индекс в коллекции, в которой она сейчас находится? Я хочу сделать это, потому что хочу получить доступ к модели выше или ниже текущей цели.

Другими словами, есть что-то вроде:

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

Мои данные представляют собой вложенный набор, поэтому я могу просто выполнить поиск по столбцам «lft» или «rgt», но я не хотел изобретать велосипед, если Backbone уже имеет эту информацию.

Ответы:


201

да, backbone предоставляет доступ ко многим методам underscore.js в моделях и коллекциях, включая indexOfметод в коллекциях. он также предоставляет такой atметод, как вы показали.

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

2
Спасибо, что прояснили это! Вы знаете, было бы так здорово, если бы этот .collectionучастник был явно указан в документации для Model...
aaaidan

4
Я не могу заставить это работать во время initializeразговора. Есть идеи, как я могу заставить это работать?
Aakil Fernandes

Это тоже через меня за петлю. 'indexOf' находится в разделе "Коллекции> Методы подчеркивания" в левом меню, поэтому он не у всех на виду.
Jeffpowrs

@Jeffpowrs Это также странно, потому что indexOf в документации по подчеркиванию является функцией массива, тогда как другая функция массива, findIndex, не работает с коллекциями.
Джошуа Тейлор
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.