2011-12-20 27 views
16

Tôi có một bộ sưu tập trả về một mô hình cho mỗi ngày trong một phạm vi nhất định (được nạp thông qua bộ điều khiển Rails).Backbone Newbie: Cách lấy mô hình đầu tiên từ bộ sưu tập?

Theo quan điểm của tôi về bộ sưu tập, tôi muốn hiển thị tháng cho ngày đầu tiên từ bộ sưu tập ... Tôi chỉ tự hỏi cách thức thanh lịch nhất để đạt được điều đó là gì? Có vẻ như đơn giản nhất là truy cập vào mảng các mô hình thông qua bộ sưu tập, nab cái đầu tiên và chạy phương thức được yêu cầu trong mô hình đó để lấy tên tháng. Có vẻ đơn giản, nhưng tôi không thể tìm ra cách để nab mô hình đầu tiên từ bên trong bộ sưu tập.

Hoặc, tôi có thể chuyển giá trị được yêu cầu qua cuộc gọi tới bộ định tuyến() từ đường ray, nhưng điều đó có vẻ hơi xấu xí.

Cuối cùng, tôi có thể tạo một bộ sưu tập hoàn toàn mới chỉ để truy xuất một giá trị đó, nhưng một lần nữa - dường như quá mức.

Bất kỳ đề xuất nào về cách tôi nên thực hiện việc này? Giả sử nó không phải là quá nhiều điều cấm kỵ để nuôi dữ liệu mô hình trở lại vào một bộ sưu tập, tôi đoán tôi đang hỏi làm thế nào để làm điều đó.

Trả lời

47

Backbone.js bộ sưu tập có quyền truy cập vào phương thức Underscore.js.

MyCollection.first() nên trả về mô hình đầu tiên từ bộ sưu tập.

+1

http://documentcloud.github.com/backbone/#Collection-Underscore-Methods và http: // documentcloud .github.com/gạch dưới/để biết thêm thông tin. – djlumley

+0

Điều gì sẽ xảy ra nếu bạn không sử dụng dấu gạch dưới, nhưng một công cụ mẫu khác (ví dụ: handlebars.js)? Có phương thức hoặc mẫu gốc backbone.js không? – lucke84

+2

@ lucke84 - 'Underscore.js' là một phụ thuộc khó, vì vậy ngay cả khi bạn đang sử dụng một công cụ tạo khuôn mẫu khác (EJS, ECO, Jade, v.v.) bạn vẫn sẽ bao gồm' Underscore.js' và sẽ có thể sử dụng phương pháp của nó trong quan điểm của bạn (miễn là chúng cho phép Javascript được đánh giá.) Trong trường hợp bạn đang sử dụng một công cụ mẫu không cho phép đánh giá Javascript, nó sẽ là một vấn đề khá đơn giản trong việc thiết lập một biến view trước khi bạn hiển thị chế độ xem cụ thể. – djlumley

7
collection.at(0) //etc 

Nhưng nếu bạn phải kiểm tra nếu có ít nhất một yếu tố

if(collection.length){ 
    collection.at(0) //etc 
} 
Các vấn đề liên quan