我有这些模型:灰烬,保存记录用的hasMany关系创建界面右边的方式
Gmcontrolpanel.Offer = DS.Model.extend({
name: DS.attr('string'),
date: DS.attr('string'),
duration: DS.attr('number'),
products: DS.hasMany('product', {async: true}),
});
Gmcontrolpanel.Product = DS.Model.extend({
name: DS.attr('string'),
description: DS.attr('string'),
offer: DS.belongsTo('offer'),
variations: DS.hasMany('variation', {async: true})
});
Gmcontrolpanel.Variation = DS.Model.extend({
description: DS.attr('string'),
quantity: DS.attr('number'),
price: DS.attr('string'),
product: DS.belongsTo('product')
});
我试图建立一个可重复使用的界面,用于创建/编辑的要约;我为插入产品和插入变体提出了两个单独的视图;
该产品视图有一个+和一个 - 按钮来添加或删除产品,以及相同的变异视图;
路由的型号是:
model: function() {
return this.get('store').createRecord('offer');
}
我想的是,在点击保存按钮时,所有(报价,产品和变种)被保存;
首先:哪一个是最好的实现方式? containerViews? collectionViews或{{#each}}循环?
然后,如何创建子记录并将它们绑定到子视图上的输入字段?我的意思是:每次插入productView时,我都可以创建新的产品记录,并且变体的内容相同,但在保存时如何获取所有这些记录并正确设置所有关系字段?
好的,谢谢你的这个;它在帮助;这个观点如何:你认为在这种情况下最好的是什么?我的意思是,因为需要在主视图中显示许多产品视图,并且在任何产品视图中显示许多变体视图,所以最佳选择是什么?将它们推入containerViews(一个在主视图中,一个在每个productsView中);或者将它们推入collectionViews(容器和collectionview之间的区别是什么?)或其他东西... –
我已经更新了关于我认为会视图的用法的答案。我没有使用过collectionView,但是使用了containerView,而collectionView似乎可以扩展容器视图,但是在你的情况下,普通视图应该足够了。 –
谢谢你的帮助,我已经接受你的答案,因为它正在把我推向正确的方向;特别是将儿童记录推入父母关系的方式是我在文档中找不到的一步... –