2012-03-28 3 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 или Hash для сборки модели не с этим ключ/значение пары, которые не соответствуют Collection.model.

Затем URL вы хотите построить имеет волшебную корневой ключ с названием input затем один ключ invoice (lowcase), который содержит массив только один элемент, который является Hash, то InvoiceDetails (CamelCase), который вы непрерывно до фактического cart.

Я думаю, что вам нужно:

  • InvoiceDetailsCollection: сохраняя все повозки
  • Invoice: накладная
  • Input: модель, которая держит как Invoice и InvoiceDetails

Тогда :

  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
  • ДАННЫЕ: { "POSWorkstationID": "POS7", "POSClerkID": "admin", ... , "Details": [{}, {}] }

Таким образом, вы можете удалить Input модель, что я предложил обернуть все странное поведение и сохранить InvoiceDetailsCollection в модели Invoice.

+0

InvoiceDetailsCollection: хранение всех тележек // На самом деле я делаю это. Только что я добавил InvoiceDetails при добавлении тележек в InvoiceDetailCollection. – jongbanaag

Смежные вопросы