【问题标题】:can a backbone.js model contain multiple collections?一个backbone.js 模型可以包含多个集合吗?
【发布时间】:2012-07-25 10:16:31
【问题描述】:

我刚刚开始使用backbone.js,并试图围绕建模概念展开思考。我想使用主干 js 创建一个购物车应用程序,与第 3 方 REST api 接口(不是 rails,无法修改)。

这是获取购物车内容的 JSON 响应示例:

        {
          "_v" : "12.3",
          "currency" : "USD",
          "product_sub_total" : 96.00,
          "product_total" : 86.00,
          "shipping_total" : null,
          "tax_total" : null,
          "order_total" : null,
          "product_items" : 
          [
            {
              "product_id" : "123",
              "item_text" : "Product foo",
              "quantity" : 2.00,
              "product_name" : "foo",
              "base_price" : 30.00,
              "price" : 60.00
            },
            {
              "product_id" : "456",
              "item_text" : "Product foo",
              "quantity" : 1.00,
              "product_name" : "bar",
              "base_price" : 40.00,
              "price" : 40.00,
              "price_adjustments" : 
              [
                {
                  "promotion_id" : "10% off",
                  "promotion_link" : "http://example.com/dw/shop/v12_3/promotions/10_percent_off",
                  "item_text" : "10% off",
                  "price" : -4.00
                }
              ]
            }
          ],
          "order_price_adjustments" : 
          [
            {
              "promotion_id" : "10$ off",
              "promotion_link" : "http://example.com/dw/shop/v12_3/promotions/10_bugs_off",
              "item_text" : "10$ off",
              "price" : -10.00
            }
          ]
        }

查看此 JSON 数据,有“product_total”和“shipping_total”等汇总数据,其中包含“product_items”和“order_price_adjustments”等列表。甚至单个“product_items”也可以有“price_adjustments”的嵌套列表。

如何在backbone.js 中为这个购物车建模?我是否应该为我看到的每个散列(“product_item”、“price_adjustment”)创建一个模型,然后对这些模型的集合进行建模,然后制作一个包含这些集合以及聚合数据的篮子模型?我不知道如何处理这个......

【问题讨论】:

  • 我是 Backbonejs 的新手,但我很确定 Collections 是一组多个模型。不是相反。

标签: backbone.js backbone-views backbone.js-collections


【解决方案1】:

你真的可以随心所欲地做到这一点。如果您不需要对商品或价格调整数据进行任何操作,只需访问它,我就将其保留为 JavaScript 对象。如果您想定义函数来转换和处理该数据,我会定义 ItemPriceAdjustment 模型。

当然,您的ShoppingCart 模型可以具有称为itemspriceAdjustments 的属性,它们是包含这些模型的主干集合。如果您最终没有将它们定义为模型,则将它们保留为普通数组。

我倾向于在创建 Backbone 模型方面犯错,因为这样做很简单,并且可以省去你在决定应该首先将它们定义为 Backbone 模型的麻烦。

简而言之,我可能最终会得到一个带有 Backbone ItemsPriceAdjustments 集合的 ShoppingCart 模型,其中包含 ItemPriceAdjustment 模型。即shoppingCart.get('items') 将返回您的Items 集合。

【讨论】:

    猜你喜欢
    • 2013-05-29
    • 2012-01-22
    • 1970-01-01
    • 1970-01-01
    • 2011-10-19
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多