2011-09-19 4 views
115

Có cách nào để tìm chỉ mục của mô hình trong bộ sưu tập không?Backbone.js: Làm thế nào để có được chỉ số của một mô hình trong một bộ sưu tập xương sống?

Giả sử trong chế độ xem, chúng tôi có một mô hình mà chúng tôi đang nghiên cứu, mô hình đó có thể tạo ra chỉ mục của nó trong bộ sưu tập mà nó hiện đang nằm trong đó không? Tôi muốn làm điều này vì tôi muốn truy cập vào 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ó cái gì đó như:

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

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

Trả lời

196

có, xương sống 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 phương thức indexOf trên bộ sưu tập. nó cũng cung cấp phương thức at như bạn đã hiển thị.

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

Tuyệt vời! Cảm thấy hơi xấu hổ vì tôi không nghĩ về indexOf. Đoán nó đi để hiển thị như thế nào ít tôi biết. :) Cảm ơn ngài! –

+2

Cảm ơn bạn đã xóa thông tin này! Bạn biết đấy, nó sẽ là _so great_ nếu thành viên '.collection' được liệt kê rõ ràng trong tài liệu cho' Model' ... – aaaidan

+4

Tôi không thể làm việc này trong khi gọi 'initialize'. Bất kỳ ý tưởng làm thế nào tôi có thể làm cho công việc đó? –