Backbone.js: Як отримати індекс моделі в колекції Backbone?


119

Чи є спосіб знайти індекс моделі в колекції?

Скажімо, з огляду на те, що у нас є модель, над якою ми працюємо, чи може ця модель виплюнути свій індекс у колекції, в якій вона знаходиться зараз? Я хотів би це зробити, тому що я хочу отримати доступ до моделі вище чи нижче поточної цілі.

Іншими словами, є щось на кшталт:

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

Мої дані - це вкладений набір, тому я можу просто здійснити пошук у стовпцях "lft" або "rgt", але я не хотів винаходити колесо, якщо у Backbone вже є така інформація.

Відповіді:


201

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

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

2
Дякуємо, що очистили це! Знаєте, було б так здорово, якби .collectionучасник був чітко вказаний у документах для Model...
aaaidan

4
Я не можу змусити це працювати під час initializeдзвінка. Будь-яка ідея, як я могла зробити так, щоб це працювало?
Аакіл Фернандес

Це також через мене для циклу. 'indexOf' розміщено у розділі Колекції> Методи підкреслення в лівій частині меню, тому його не можна побачити.
Jeffpowrs

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