2012-07-12 115 views
0

我有一個用於編輯提供者記錄的表單。提供者記錄與多個地址有關係,因此提供者可以具有家庭,辦公室,休假等地址類型。如何將兩個json對象合併爲一個

來自服務器的json地址對象只是帶來了提供者的地址,所以如果提供者只有一個「休假」類型的地址,那麼這是唯一的記錄,但在編輯形式,我必須要擁有所有地址類型以編輯現有的地址或添加新的地址類型。

我不知道我的方法是否正常,但我在我的表單中有一個「jsonBaseAddresses」,它包含所有可能的地址類型,並且此對象使用Knockout綁定到表單(這實際上有效),所以我想將「jsonRemoteAddress」和「jsonBaseAddresses」合併爲「jsonBaseAddresses」,但與遠程json對象中的數據合併。

再次,我不知道這是否是正確的方式來做到這一點。感謝任何幫助。這是我想要做的jsFiddle示例。

http://jsfiddle.net/HJrGf/4/

感謝

+0

要澄清,基地址列表是唯一的*可能*選項集?如果服務器通過不在該列表中的類型發送,它是否應該被忽略? – Tyrsius 2012-07-12 17:36:32

+0

是的,這是一個固定的列表。數據庫中不允許有更多選項。 – VAAA 2012-07-12 17:40:02

回答

1

你爲什麼不只是遍歷遠程地址,並將其推到地址中的觀點一樣,模式?

var vm = new App(jsonBaseAddresses); 
for (var i = 0; i < jsonRemoteAddresses.length; i++){ 
vm.addresses.push(new Address(jsonRemoteAddresses[i]); 
} 

等等......

要合併的地址,你可以用以下解決方案:

  1. 可以推出房產喜歡等於地址和比較領域 標識的唯一地址

  2. 選擇本帖子中的任何內容How to determine equality for two JavaScript objects? 得到addr ess散列碼,並在上面的循環中比較要合併的地址代碼散列 。我在我的 項目之一中使用了此解決方案。並且還檢查這http://documentcloud.github.com/underscore/#isEqual

+0

感謝狂人,如果我推,那麼我會得到更多的地址,只有4種類型的地址可用。所以我需要的是合併它們,所以我總是有4種類型。 – VAAA 2012-07-12 18:08:16

+0

檢查我的更新 – Madman 2012-07-12 18:17:04

+0

mmm是啊也許做一個循環基地址,看看地址是否在遠程地址退出,如果是的話,然後循環通過所有屬性,並使用遠程地址更新它們的權利? – VAAA 2012-07-12 18:21:46

相關問題