[英]fetch() not calling its Success and Error callback functions (backbone.js)
[英]backbone.js - using parse without calling fetch
在頁面加載時,我通過這種技術將我的數據引導到我的集合中。 這很好用,但是我遇到了一個問題,我有子模型也需要進行投射。
例如,我返回一個名為Book的JSON集合,每個book數組包含10-20個自稱為Pages的模型。 如果我嘗試直接訪問Pages,我得到[object][object]
錯誤,因為Backbone無法弄清楚它是什么類型的對象。
以前當我使用fetch
,我會通過使用包含parse
操作的集合來解決這個問題。 在parse
我會做類似的事情:
Collection_Books = Backbone.Collection.extend({
model: Model_Book,
parse: function (response) {
response.Pages = new Collection_Pages(response.Pages);
return response;
}
});
現在我正在直接訪問數據而不是使用fetch
,文檔意味着我不再能夠訪問parse
方法。
如果我在頁面加載時沒有使用fetch
或調用服務器,我如何使用Books> Pages示例來轉換子模型?
不確定這是否是新的,但看起來你也可以只將構造函數的options參數的parse
屬性設置為true,從而告訴構造函數使用你的parse方法:
modelInstance = new MyModel(obj, {parse: true});
更新 :這個答案現已過時,請參閱uglymunky的答案 ,了解更多最新信息。
你是對的, parse
只是指定在fetch
期間被調用,所以當你從原始數據構建一個集合時它不會被調用。
但是,由於您控制了用於引導集合的原始數據,因此您可以自己調用集合的parse
:
var c = new YourCollection(
YourCollection.prototype.parse([
// attribute data goes here...
])
);
演示: http : //jsfiddle.net/ambiguous/kdaZ3/
你的parse
方法(集合和模型)不應該關心它們的調用上下文,所以直接從原型調用它們應該沒問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.