Backbone.Collection.fetch():
fetch: function(options) {
options = options ? _.clone(options) : {};
if (options.parse === void 0) options.parse = true;
var success = options.success;
options.success = function(collection, resp, options) {
var method = options.update ? 'update' : 'reset';
collection[method](resp, options);
if (success) success(collection, resp, options);
};
return this.sync('read', this, options);
},
Vì vậy, có chuyện gì thế ở đây là, bạn thông qua chức năng được gán cho var succees
.
collection[method](resp, options);
Được gọi và trong trường hợp của bạn là 'reset'
.
collection.reset
phải trải qua và thêm tất cả các mô hình của bạn, kích hoạt tất cả các sự kiện trên đường đi. Tôi không biết chính xác những gì đang xảy ra nhưng nó đi qua collection.reset
, collection.add
, model.add
, v.v ... Tôi đã không theo dõi tất cả.
Tôi không chắc chắn vấn đề chính xác là gì, tôi xin lỗi về điều đó. Tôi hy vọng tôi ít nhất có thể giúp bạn thử một số thứ để có thể chúng ta có thể đoán ra. Dòng if (success) success(collection, resp, options)
là cuộc gọi đến hàm succes của bạn. Những gì bạn có thể thử làm là phải gọi lại thành công của bạn chấp nhận các đối số được truyền lại và làm một số an ủi của những người ra:
success: function(collection, resp, options) {
console.log(collection); // this might do the trick.
// if not, you could try the following
collection.on("reset", function(c, options) {
console.log(c); // see what that gives ya.
});
}
Một điều nữa là, tôi không thể tìm thấy bất cứ nơi nào trong nguồn hoặc các tài liệu nơi collection.fetch có một tùy chọn thêm. Nếu tôi bỏ lỡ nó, xin vui lòng cho tôi biết tôi muốn nhìn nó qua.
Chúc bạn may mắn, hãy cho tôi biết những gì bạn tìm thấy. Nó có thể là giá trị trailing thông qua với một bước thông qua trình gỡ lỗi quá.
Chết tiệt, nó cũng đánh tôi rằng bảng điều khiển thường chỉ cho tôi phiên bản cập nhật nhất của các đối tượng bộ sưu tập khi không cần.
thử an ủi ra lenghts của các bộ sưu tập thay vì hoặc một cái gì đó:
var len = $this.Messages.length;
console.log(len);
//...
// or in the success callback
var len = collection.length;
console.log(len);
Bạn đã xác minh rằng dữ liệu thực sự đang được trả về trong cuộc gọi nhận chưa? – kinakuta
Bạn chỉ đang tìm kiếm các mô hình mới được thêm vào trong '$ this.Messages' trong lệnh gọi' success'? Nếu vậy, bạn có chắc chắn rằng, khi 'success' được gọi, bộ sưu tập đã phân tích cú pháp phản hồi và thêm chúng vào bộ sưu tập? –