2012-03-28 208 views
0

嗨,我需要格式化我的集合,以便我的Rest接受請求。 (我重建我的項目,所以我已經知道具體是我的休息接受什麼格式)backbone.js中的格式集合

格式應該是:

{"input":"{invoice:[{}]","InvoiceDetails:[{},{},{}]}} 

所以在我的骨幹工程,我有:

CartCollection //collection 
InvoiceDetailsCollection //collection 
Invoice //model 
InvoiceDetail //model 
Cart //model 

這是我的保存功能:

save: function(){ 
    invoice = new Invoice(); 
    invoice.set({POSWorkstationID: "POS7"}); 
    invoice.set({POSClerkID: "admin"}); 
    invoice.set({CustomerName: "Alice in Wonderland Tours"}); 
    invoice.set({IsFreightOverwrite: true}); 
    invoice.set({BillToCode: "CUST-000009"}); 
    InvoiceDetailCollection.add([{Invoices: invoice}]); 

    _.each(this.collection.models, function(cart){ 
     InvoiceDetailCollection.add([{InvoiceDetails: cart }]); 
    }); 
    alert(JSON.stringify(InvoiceDetailCollection.toJSON())); 
} 

我的當前格式是這樣的

[{"Invoices":{"POSWorkstationID":"POS7","POSClerkID":"admin","CustomerName":"Alice in Wonderland Tours","IsFreightOverwrite":true,"BillToCode":"CUST-000009"}},{"InvoiceDetails":{"Qty":"1","ItemCode":"ITEM-000004","ItemDescription":"Old World Lamppost\r\n\r\n","RetailPrice":107.99,"SalesPrice":107.99}}] 

回答

0

沒有在這個設置看起來標準

您管理InvoiceDetailCollection的方式不像正常的Collection,看起來更像是一個Model與兩個Collections成。一個集合用一個Model或哈希構建一個模型而不是這個鍵/值對與Collection.model不匹配。

然後你想建立的網址有一個叫input然後一鍵invoice(lowcase)一魔術根密鑰包含這是一個Hash,然後InvoiceDetails(駝峯)只有一個元素的數組,你是不斷將重置爲實際的cart內容。

我想你需要的是:

  • InvoiceDetailsCollection:保持所有的車
  • Invoice:發票
  • Input:即保持兩個InvoiceInvoiceDetails

那麼模型:

  1. 創建Invoice模型。
  2. 將您的購物車加入InvoiceDetailsCollection
  3. 發票添加到輸入:Input.set("invoice", invoice)
  4. 的InvoiceDetailsCollection添加到輸入:Input.set("invoice_details", InvoiceDetailsCollection)

覆蓋該Input.toJSON回返input: this.toJSON()(簡化的代碼)

但是我仍然認爲如果你可以改變這個URL來獲得更多的REST,你的生活會更容易。我認爲所有這些信息屬於Invoice模型,這樣可以接受請求等:

  • POST:/invoices
  • DATA:{ "POSWorkstationID": "POS7", "POSClerkID": "admin", ... , "Details": [{}, {}] }

這樣你可以刪除Input模型,我建議包裝所有怪異的行爲並將InvoiceDetailsCollection保留在Invoice模型中。

+0

InvoiceDetailsCollection:保留所有的購物車//其實我正在那樣做。只是我在添加購物車到InvoiceDetailCollection時添加了InvoiceDetails。 – jongbanaag 2012-03-28 10:46:15