2017-04-21 48 views
0

related question我想知道如何在ember.js中的一對多關係中將父對象添加到子對象。現在我想知道如何在創建或更新父項時使用新創建的子項同時將它們保存在服務器上。如何在ember js中保存嵌套對象

服務器會想到這樣的事情:

parent { 
    prop1: 'val1', 
    prop2: 'val2', 
    child: { 
     prop1: val1 
     prop2: val2 
    } 
} 

但Ember的有效載荷是這樣的:

parent { 
    prop1: 'val1', 
    prop2: 'val2', 
    child:null 
} 

有一個已經存在的孩子添加到母體時,這同樣適用於更新。然後,有效載荷看起來是這樣的:

parent { 
    prop1: 'val1', 
    prop2: 'val2', 
    child:2 
} 

因此,這不是與有效載荷傳輸的子對象,但只有它,如果現有的ID(否則爲null))。是否有可能發送一個像服務器一樣的嵌套對象,或者是否必須分別用兩個ajax-post/put-requests保存兩個模型。

回答

1

我不確定你的服務器爲什麼期待這樣的事情,但你可以這樣做。

首先要在父模型你把

child: DS.attr("") //this will give you ability to send any type in your case object to property child. 

然後在其中創建子

this.store.createRecord('parent',{ 
     child: this.store.createRecord('child',{name: "John"}) 
    }); 

,或者如果你有這樣的事情

let parent = this.store.findRecord("parent", 1); 
let child = this.store.createRecord('child',{name: "John"}); 
parent.set("child", child); 

個人而言,我會避免,但你可以在js中做任何你想要的。

+0

感謝您的回答。 REST服務器是一個開發的,具有php/zend/appigility的開箱即用的REST HAL規範,並且顯示的格式是將數據推送到服務器的方式。我認爲能夠通過一個請求推送相關記錄並讓服務器在同一往返中處理它們是非常有意義的。在我的情況下,我有一個公司數據和地址數據的表格。這是一種形式,但是有兩個相關的實體。如果我無法將它們發佈在一起,我會需要兩個ajax調用,我認爲這不是很方便。歡迎任何建議。 – Mannimalte

+0

這正是我曾經作爲RoR Ember開發者所做的,但是如果你需要類似這樣的東西以及你的服務器期望的東西,那麼只要你需要旋轉,請使用這個讓我知道。 –