我刚开始使用backbone.js并尝试围绕建模概念。我想使用骨干js创建一个购物车应用程序,与第三方REST api连接(不是rails,无法修改)。
这是GET购物车内容的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”),然后建模这些模型的集合,然后制作一个包含这些集合以及聚合数据的篮子模型?我不知道如何处理这个......
答案 0 :(得分:4)
你可以随心所欲地做到这一点。如果您不需要对项目或价格调整数据进行任何操作,除了访问它之外,我只是将其保留为JavaScript对象。如果您想定义要转换和处理该数据的函数,我会定义Item
和PriceAdjustment
模型。
当然,您的ShoppingCart
模型可以包含名为items
和priceAdjustments
的属性,这些属性是包含这些模型的Backbone集合。如果你最终没有将它们定义为模型,只需将它们保留为普通数组即可。
我倾向于在创建Backbone模型方面犯错,因为它很容易做到并且将为您节省更多的麻烦,决定您应该首先将它们定义为Backbone模型。
简而言之,我可能最终得到一个ShoppingCart
模型,其中包含Items
和PriceAdjustments
和Item
集合,其中包含PriceAdjustment
和{{} 1}}模型。即shoppingCart.get('items')
会返回Item
s。