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.

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);

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.