2012-06-20 62 views
3

我已經擴展了Backbone Collection類以包含一個「保存」方法,它本質上是一個同步代理。每當「save」被執行時,一個對象數組被提交給後端。但是,後端目前並不構建爲處理直集合,它需要對象。有沒有人有關於如何將這個集合「包裝」到對象中的建議?如何將Backbone集合包裝到JSON對象中?

我想:

var objectCollection = {}; 
objectCollection['key'] = backboneCollection.models; 

但在上述結果「模式不具有的toJSON方法」的錯誤 - 因爲我只是進行代理同步。謝謝。

+0

雖然你可以使用來自json.org(它有一個字符串化方法)的JSON對象,這仍然止跌」讓你到那裏。這是因爲根據定義,JSON不能表示函數,我假設'backboneCollection.models'將會有函數,對吧? –

回答

3

要爲Backbone.sync提供自定義格式,您必須將數據作爲JSON字符串傳遞並提供正確的contentType。事情是這樣的:

var M=Backbone.Collection.extend({ 
    url: '/echo/json/', 

    save: function() { 
     var data={}, opts= {}; 
     data.key=this.toJSON(); 

     opts.contentType = 'application/json'; 
     opts.data = JSON.stringify(data); 

     Backbone.sync.call(this,'update',this, opts); 
    } 
}); 

並有小提琴http://jsfiddle.net/xx4pr/(檢查您的控制檯來查看請求)

+0

感謝您的示例/小提琴,它對理解這種方法非常有幫助。我不知道同步接受和處理選項參數內的數據 - 我認爲它只採取成功和錯誤回調。 – Ari

相關問題