Backbone.js: Bagaimana cara mendapatkan indeks model dalam Koleksi Backbone?

119

Apakah ada cara untuk menemukan indeks model dalam koleksi?

Katakanlah dalam sebuah tampilan kita memiliki model yang sedang kita kerjakan, dapatkah model itu mengeluarkan indeksnya di dalam koleksi yang saat ini ada di dalamnya? Saya ingin melakukan ini karena saya ingin mengakses model di atas atau di bawah target saat ini.

Dengan kata lain apakah ada sesuatu seperti:

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

Data saya adalah kumpulan bersarang jadi saya bisa melakukan pencarian di kolom "lft" atau "rgt", tetapi saya tidak ingin menemukan kembali roda jika Backbone sudah memiliki info ini.

brian h
sumber

Jawaban:

201

ya, backbone menyediakan akses ke banyak metode underscore.js pada model dan koleksi, termasuk indexOfmetode pada koleksi. itu juga menyediakan atmetode seperti yang Anda tunjukkan.

var index = this.collection.indexOf(this.model);
var modelAbove = this.collection.at(index-1);
Derick Bailey
sumber
2
Terima kasih telah menyelesaikan ini! Anda tahu, akan sangat bagus jika .collectionanggota tersebut secara eksplisit terdaftar di dokumen untuk Model...
aaaidan
4
Saya tidak bisa mendapatkan ini untuk bekerja selama initializepanggilan. Ada ide bagaimana saya bisa membuatnya berhasil?
Aakil Fernandes
Ini melalui saya untuk satu lingkaran juga. 'indexOf' ditempatkan di bawah Collections> Underscore Methods di menu sebelah kiri, jadi tidak terlihat jelas.
Jeffpowrs
@Jeffpowrs Ini juga aneh, karena indexOf, dalam dokumentasi garis bawah, adalah fungsi array, sedangkan fungsi array lainnya, findIndex, tidak bekerja dengan koleksi.
Joshua Taylor