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);
},
所以這裏是怎麼了,你的函數傳遞被分配到var succees
。
collection[method](resp, options);
被調用,在你的情況下方法是'reset'
。
collection.reset
必須通過並添加您的所有模型,在途中發射所有事件。我不知道到底發生了什麼,但它經歷了collection.reset
,collection.add
,model.add
等等......我並沒有遵循這一切。
我不確定這個問題到底是什麼,我很抱歉。我希望我至少能幫助你嘗試一些東西,或許我們可以弄明白。行if (success) success(collection, resp, options)
是對你的succes函數的調用。什麼,你可以嘗試做的是讓你的成功回調接受傳回的參數和做那些一些安慰了:
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.
});
}
另一件事是,我不能在源代碼任意發現或文檔,其中collection.fetch需要添加選項。如果我錯過了,請讓我知道我想看看它。
祝你好運,讓我知道你在找什麼。通過調試器也可能值得一試。
該死的時候,控制檯經常向我展示集合對象不應該有的最新版本的時候,它也讓我感到震驚。
試圖安慰了藏品的lenghts而不是什麼:
var len = $this.Messages.length;
console.log(len);
//...
// or in the success callback
var len = collection.length;
console.log(len);
您是否驗證過數據實際上是在get調用中返回的? – kinakuta 2013-03-09 06:54:52
您是否只在'success'回調中的'$ this.Messages'中尋找新添加的模型?如果是這樣,你確定當調用'success'時,集合已經解析了響應並將它們添加到集合中? – 2013-03-09 06:57:28