使用Marionette创建复杂的视图(表单)

时间:2012-09-03 22:50:21

标签: backbone.js marionette

我想用Backbone.Marionette创建一个复杂的表单。我认为表格应该是这样的:

Form

产品或付款的任何变更都应影响“销售”模式。模型结构是:

sale   :   {
    date        :             '10/01/2010',
    customer    :             'Jaime Rivera'
    products    :             [{product_name:'ZZZZZZ', price: 100, quantity: 2},
                               {product_name:'yyyyyy', price: 33, quantity: 1}],
    payments    :             [{type:'check', other_data: '', amount: 160},
                               {type:'credit-card', other_data: '', amount: 73}] 
}

我想知道构建视图以创建表单的最佳方法。我不确定我是否应该使用layout,compositeview或collectionview。

1 个答案:

答案 0 :(得分:4)

使用Marionette的观点有多种方法可以实现这一点,而且这些观点都不一定是正确的或错误的。有些会更好地适应您的其他约束,例如需要使用哪些数据来呈现它,需要处理哪些事件等等。

考虑到您显示的数据,这看起来像是一个带有两个CompositeView的布局。

布局将呈现日期选择器,输入框和两个用于产品和付款的空div。这些空div中的每一个都会在布局中关联一个区域定义,因此您可以显示产品和付款。

然后,您可以拥有一个CompositeView for products - 一个呈现产品列表和Add Product按钮的模板。 CompositeView本身将处理Add Product按钮单击。将指定ItemView以呈现列表中的每个产品。

付款方式与产品相同。

...再一次,这只是让它发挥作用的一个选择。你可以使用一个Layout和2个Collection视图完成整个事情,或者将整个事物作为单个ItemView(这很难维护,但仍然可能)。

希望有所帮助。