我有這些模型:灰燼,保存記錄用的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似乎可以擴展容器視圖,但是在你的情況下,普通視圖應該足夠了。 –
謝謝你的幫助,我已經接受你的答案,因爲它正在把我推向正確的方向;特別是將兒童記錄推入父母關係的方式是我在文檔中找不到的一步... –