tôi sẽ thực hiện một loại quản lý bộ sưu tập trong trường hợp của bạn:
var manager = (function(){
var constructors = {
'example': ExampleCollection
};
var collections = {};
return {
getCollection: function(name) {
if(!collections[name]) {
var collection = new constructors[name]();
collection.fetch();
collections[name] = collection;
}
return collections[name];
}
}
})();
Ở đây người quản lý có trách nhiệm instantiating bộ sưu tập và lấy chúng. Khi bạn gọi:
var exampleCollection = manager.getCollection('example');
bạn nhận được một ví dụ về bộ sưu tập mẫu với dữ liệu đã được tìm nạp. Bất cứ khi nào bạn cần bộ sưu tập này một lần nữa, bạn có thể gọi lại phương thức. Sau đó, bạn sẽ nhận được chính xác cùng một trường hợp mà không cần phải lấy lại nó.
Đây chỉ là một ví dụ về trình quản lý rất đơn giản và có rất nhiều tính năng bổ sung mà bạn có thể triển khai và nâng cao.
Tôi đặc biệt khuyên không nên xử lý vấn đề này ở mức thấp hơn (ví dụ: lớp vận chuyển của $ .ajax). Nếu bạn làm điều đó, bạn sẽ ngăn không cho bộ sưu tập của bạn bị tìm nạp nhiều lần, nhưng bạn sẽ có các phiên bản mẫu khác nhau với cùng một id nổi xung quanh ứng dụng của bạn. Mỗi cá thể bộ sưu tập sẽ tạo ra các mô hình riêng của nó.
Trong ứng dụng CouchApp hiện đang làm việc, tôi cũng thấy cần thiết để ngăn các bản sao mô hình trùng lặp trong các bộ sưu tập khác nhau (các khung nhìn db khác nhau có thể trả về cùng một dữ liệu mô hình). Điều này đã được giải quyết bằng cách có một bộ sưu tập riêng trong trình quản lý, theo dõi tất cả các mô hình đã được tải vào ứng dụng.
Cuối cùng nhưng không kém phần quan trọng bạn có thể xem xét triển khai phương thức làm mới trong bộ sưu tập của mình hoặc người quản lý sẽ xử lý việc cập nhật bộ sưu tập từ máy chủ. Nếu bạn làm điều này với phương pháp lấy toàn bộ bộ sưu tập của bạn được reseted để tất cả các mô hình bị phá hủy và sau đó tái tạo. Điều này là xấu nếu bạn có các mô hình từ bộ sưu tập này được tham chiếu ở một nơi khác trong ứng dụng (như bạn thường làm). Những trường hợp đó đã lỗi thời và được sao chép trong ứng dụng của bạn sau đó. Phương thức làm mới kiểm tra các trường hợp với các id đến đã có trong bộ sưu tập curent. Nếu vậy chúng được cập nhật, nếu không chúng sẽ được thêm vào.
Tiền thưởng đang BẬT! Tìm cách để có thêm một số ý kiến về chủ đề này! – Industrial
Bạn có muốn giữ bộ sưu tập của mình được lưu trữ trên trình duyệt bằng cách sử dụng localStorage hay chỉ đảm bảo rằng bộ sưu tập là một singleton và luôn luôn bạn cần nó sẽ gọi cùng một cá thể đã được tìm nạp? –