Bạn có thể không muốn chỉ sử dụng Collection.fetch()
, vì bạn sẽ không nhận được lợi ích của bộ nhớ đệm phía máy khách - nó sẽ thả các mục bạn đã tải từ máy chủ và đặt lại bộ sưu tập. Bạn có thể sẽ cần phải mở rộng Backbone.Collection
bằng chức năng tùy chỉnh để truy xuất thêm các mục. Tôi sử dụng đoạn mã sau vào một dự án gần đây:
Backbone.Collection.extend({
// fetch list without overwriting existing objects (copied from fetch())
fetchNew: function(options) {
options = options || {};
var collection = this,
success = options.success;
options.success = function(resp, status, xhr) {
_(collection.parse(resp, xhr)).each(function(item) {
if (!collection.get(item.id)) {
collection.add(item, {silent:true});
}
});
if (!options.silent) collection.trigger('reset', collection, options);
if (success) success(collection, resp);
};
return (this.sync || Backbone.sync).call(this, 'read', this, options);
}
});
này được chủ yếu là sao chép từ các mã mặc định fetch()
, nhưng thay vì thả các mục hiện nó sẽ thêm những cái mới. Bạn có thể muốn triển khai thứ gì đó phía máy chủ, sử dụng đối tượng options
là Julien
đề xuất chuyển các tham số của mục bạn muốn tải, có thể là số trang (nếu bạn muốn kiểm soát kích thước trang trên máy chủ) hoặc một cặp khởi động (nếu bạn muốn kiểm soát nó trên máy khách).
** 1 ** Ok đúng như vậy nó chỉ là cần thiết để có những dữ liệu hiện tại trên trang trong bộ sưu tập xương sống của bạn? ** 2. ** Để tìm nạp mô hình từ chương trình phụ trợ, trước tiên tôi phải tạo mô hình bằng cách sử dụng ID có liên quan và sau đó tìm nạp cuộc gọi. Điều này có kích hoạt sự kiện "thêm" trên bộ sưu tập đó không? Hoặc như xa như Backbone là có liên quan mà Model là không có bộ sưu tập? – wilsonpage
Ngoài ra, "đối số trang" của bạn là gì? Đây có phải là hàm xây dựng thuộc tính 'url' không? ví dụ. 'url: function() {return x +"/"+ y +"/"+ z;' – wilsonpage
1. Phải. 2. Không, bạn sẽ phải thêm nó vào bộ sưu tập có liên quan. 3. Bạn có thể sử dụng các thuộc tính url, nhưng tôi nghĩ rằng trong các phiên bản mới nhất của xương sống, bạn có thể gửi các tùy chọn cho cuộc gọi ajax với tìm nạp, làm mới vv tìm nạp ({data: "truy vấn của bạn tại đây"}) – Julien