2012-04-25 8 views
6

Tôi đang cố gắng hiển thị một mục ở đầu bộ sưu tập (hãy tưởng tượng nếu bạn đang đăng hồ sơ mới trên facebook)Backbone (Marionette cũng) cố gắng hiển thị một kỷ lục mới khi bắt đầu bộ sưu tập, mà không cần render lại toàn bộ bộ sưu tập

Khi tôi đến để thêm (phản hồi, {at: 0}); vào bộ sưu tập, bản ghi được chèn chính xác tại 0 vào bộ sưu tập, nhưng được hiển thị ở cuối danh sách các mục. Tôi đang bối rối vì tôi đã làm việc này trước đây, nhưng tôi nghĩ rằng những gì tôi đã làm trong một phong cách hacky, chỉ cần thiết lập lại và tái rendering bộ sưu tập.

Tôi tự hỏi cách gọn gàng để xử lý việc này là gì và tôi nên liên kết logic ở đâu.

Có phải phương pháp thêm của bộ sưu tập không? Hiện tại điều này là trống (nhưng tôi đang sử dụng Marionette) và tôi cảm thấy rằng điều này sẽ ghi đè hiển thị mặc định của xương sống. Làm thế nào để kiểm soát nó một lần nữa, vì vậy tôi có thể có được một cách chính xác mục mới của tôi được thêm vào danh sách, mà không phá hủy tất cả và tái tạo nó.

Trả lời

12

Trong trình đơn, cách mặc định để thêm mục mới vào bộ sưu tập trong chế độ xem là sử dụng phương thức append của jQuery. Loại CollectionView có phương pháp được gọi là appendHtml được sử dụng để thực hiện việc thêm vào thực tế. (xem http://derickbailey.github.com/backbone.marionette/docs/backbone.marionette.html#section-24)

Mặc dù vậy, bạn có thể dễ dàng ghi đè phương thức này trong chế độ xem bộ sưu tập cụ thể của mình và thêm mô hình mới vào bất cứ nơi nào cần.

Trong trường hợp của bạn, nếu bạn luôn muốn thêm vào trước các mô hình mới vào đầu danh sách, nó rất tầm thường để thay đổi quan điểm bộ sưu tập của bạn để làm điều này:

Backbone.Marionette.CollectionView.extend({ 
    appendHtml: function(cv, iv){ 
    cv.$el.prepend(iv.el); 
    } 
}); 

Lưu ý rằng cv là bộ sưu tập xem dụ và iv là thể hiện dạng xem mục cho mô hình trong bộ sưu tập.

Nếu bạn cần làm những việc phức tạp hơn như tìm vị trí chính xác trong tập hợp các nút HTML hiện có, bạn cũng có thể thực hiện điều đó trong hàm appendHtml. Tất nhiên điều này trở nên phức tạp hơn là chỉ làm một phần phụ thêm thay vì một phụ thêm, nhưng vẫn có thể.

Hy vọng điều đó sẽ hữu ích.

+0

Cảm ơn bạn đã phản hồi, chắc chắn nghĩ rằng điều này sẽ có ích trong tương lai! –

+0

@ChrisBarry cũng xem chuỗi tại https://github.com/derickbailey/backbone.marionette/issues/78 để biết cách chèn một mục theo thứ tự vào bộ sưu tập được hiển thị. –

+0

Nhưng việc thay thế phụ thêm bằng giao diện người dùng sẽ thay đổi thứ tự khi hiển thị, phải không? – Herokiller