2012-09-29 128 views
0

我是Backbones.js的新手,我試圖讓我的JSON網址並正確解析它們。在Backbone.js解析網址

這是我的代碼:

window.Post = Backbone.Model.extend({ 
initialize: function(options) { 
    this.id = options.id; 
}, 
url: function() { 
    return 'api/get_post/?post_type=movies&id=' + this.id; 
}, 
parse : function(response) { 
    return response.posts; 
}, 
}); 

window.Posts = Backbone.Collection.extend({ 

model: Post, 
defaults: { 
    model: Post, 
}, 
url: "api/get_recent_posts/?post_type=movies", 

parse : function(response) { 
    return response.posts; 
}, 

}); 

看來解析兩個覆蓋對方什麼的。當我從Post類中移除解析選項時,我從該集合中得到完整的響應,但不是從模型中得到的。

是否有任何明確的例子來說明如何爲不同的子層次設置解析?我的JSON結果在潛入實際數據之前狀態良好。

回答

0

我從來沒有使用bones.js,但也許這些例子會有所幫助。

我認爲你想要做的就是擺脫集合中的parse()函數。這個假設是因爲它是一個Post集合,所以你的數據將以Post JSON對象[{id:'1', 'sub':{data}},{id:'2', 'sub':{data}},{id:'3', 'sub':{data}}]之類的數組形式出現。

如果您的發佈模型具有子模型或集合,那麼您的模型parse()將採用子對象屬性名稱並對其執行某些操作。

// In Post Model definition 
parse:function(response) { 
    if (response.sub) { 
     // create some model or collection etc. 
    } 
} 

當您執行集合提取時,您可能必須傳遞選項parse:true

我沿着這些線路發佈了一些內容,這可能會幫助您瞭解如何在獲取調用中實例化子模型。

Backbone.js: Load multiple collections with one request

Cast/initialize submodels of a Backbone Model

我希望這有助於。

+0

實際上,json帖子模型本身並不是一個直接的帖子數組。它的統計信息JSON和其他信息..然後在該JSON中的職位數組。我想我可以通過更改Post的解析函數來實現它。鏈接真的很有幫助。謝謝。 – fhkurdi