Javascript backbone.js中的格式集合

Javascript backbone.js中的格式集合,javascript,rest,backbone.js,underscore.js,requirejs,Javascript,Rest,Backbone.js,Underscore.js,Requirejs,嗨,我需要格式化我的收藏,以便让我的其他人接受请求。我重新创建了我的项目,因此我已经明确知道REST接受的格式 格式应为: {"input":"{invoice:[{}]","InvoiceDetails:[{},{},{}]}} 因此,在我的主干项目中,我有: CartCollection //collection InvoiceDetailsCollection //collection Invoice //model InvoiceDetail //model Cart //model

嗨,我需要格式化我的收藏,以便让我的其他人接受请求。我重新创建了我的项目,因此我已经明确知道REST接受的格式

格式应为:

{"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}}]

此设置中的任何内容看起来都不标准

管理InvoiceDetailCollection的方式与普通集合不同,更像是一个包含两个集合的模型。向集合提供模型或散列,以构建与Collection.Model不匹配的模型,而不使用此键/值对

然后,您要构建的URL有一个名为input的神奇根键,然后是一个键invoice lowcase,它只包含一个元素数组,该元素是散列,然后是InvoiceDetails camelcase,您正在不断地将其重置为实际购物车内容

我想你需要的是:


发票详细信息收集:保留所有购物车 发票:发票 输入:保存发票和发票详细信息的模型 然后:

创建发票模型。 将您的购物车放入InvoiceDetails集合。 将发票添加到输入:输入。设置发票,发票 将InvoiceDetails集合添加到输入:Input.set invoice\u details,InvoiceDetails集合 覆盖Input.toJSON以返回Input:this.toJSON代码简化

但我仍然认为,如果你能将这个URL更改为其他内容,你的生活会更轻松。我认为所有这些信息都属于发票模型,因此您可以接受如下请求:

邮寄/发票 数据:{POSWorkstationID:POS7,POSClerkID:admin,…,详细信息:[{},{}]}
通过这种方式,您可以删除我建议包装所有奇怪行为的输入模型,并将InvoiceDetails集合保留在发票模型中。

InvoiceDetails集合:保留所有购物车//实际上我正在这样做。只是我在将购物车添加到InvoiceDetailCollection时添加了InvoiceDetails。