【问题标题】:format collection in backbone.jsBackbone.js 中的格式集合
【发布时间】:2012-03-28 08:53:07
【问题描述】:

您好,我需要格式化我的收藏,以便我的 Rest 接受请求。 (我重新创建了我的项目,所以我已经明确知道我的 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}}]

【问题讨论】:

    标签: javascript rest backbone.js underscore.js requirejs


    【解决方案1】:

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

    您管理InvoiceDetailCollection 的方式不像普通的Collection,看起来更像是一个Model 和两个Collections。用 Model 或 Hash 为 Collection 提供不包含与 Collection.model 不匹配的 key/value 对的模型。

    然后您要构建的 URL 有一个名为 inputmagic 根键,然后是一个键 invoice(小写),其中包含一个只有一个元素的数组,它是一个哈希,然后是 @ 987654329@(驼峰式),您不断重置为实际的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 模型,因此您可以接受如下请求:

    • 发布:/invoices
    • 数据:{ "POSWorkstationID": "POS7", "POSClerkID": "admin", ... , "Details": [{}, {}] }

    这样您可以删除我建议包装所有奇怪行为的Input 模型并将InvoiceDetailsCollection 保留到Invoice 模型中。

    【讨论】:

    • InvoiceDetailsCollection: 保留所有购物车 // 实际上我正在这样做。只是我在将购物车添加到 InvoiceDetailCollection 时添加了 InvoiceDetails。
    猜你喜欢
    • 2012-05-10
    • 2012-10-30
    • 1970-01-01
    • 2011-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-19
    • 2014-03-12
    相关资源
    最近更新 更多