Backbone.js: Làm thế nào để lấy chỉ mục của một mô hình trong Bộ sưu tập Backbone?


119

Có cách nào để tìm chỉ mục của một mô hình trong một bộ sưu tập không?

Giả sử trong một khung nhìn, chúng tôi có một mô hình đang làm việc, liệu mô hình đó có thể đưa ra chỉ mục của nó trong bộ sưu tập mà nó hiện đang ở bên trong không? Tôi muốn làm điều này vì tôi muốn truy cập mô hình trên hoặc dưới mục tiêu hiện tại.

Nói cách khác là có một cái gì đó như:

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

Dữ liệu của tôi là một tập hợp lồng nhau nên tôi chỉ có thể thực hiện tìm kiếm trên cột "lft" hoặc "rgt", nhưng tôi không muốn phát minh lại bánh xe nếu Backbone đã có sẵn thông tin này.

Câu trả lời:


201

vâng, backbone cung cấp quyền truy cập vào nhiều phương thức underscore.js trên các mô hình và bộ sưu tập, bao gồm một indexOfphương thức trên bộ sưu tập. nó cũng cung cấp một atphương pháp như bạn đã hiển thị.

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

2
Cảm ơn cho thanh toán bù trừ này lên! Bạn biết đấy, nó sẽ là tuyệt vời như vậy nếu .collectionthành viên được liệt kê một cách rõ ràng trong tài liệu cho Model...
aaaidan

4
Tôi không thể làm cho điều này hoạt động trong khi initializegọi. Bất kỳ ý tưởng làm thế nào tôi có thể làm cho nó hoạt động?
Aakil Fernandes

Điều này thông qua tôi cho một vòng lặp quá. 'indexOf' được đặt trong Bộ sưu tập> Phương pháp gạch dưới ở menu bên trái, vì vậy nó không hiển thị rõ ràng.
Jeffpowrs

@Jeffpowrs Cũng lạ, vì indexOf, trong tài liệu gạch dưới, là một hàm mảng, trong khi một hàm mảng khác, findIndex, không hoạt động với các bộ sưu tập.
Joshua Taylor
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.