2012-08-30 30 views
0

原始觀察到其被讀取:從observable中讀取其他observable,但不更新原始文件?

self.searchResult = ko.observable(new Class()); 

3「相同的」可觀測量,其被讀出到:

self.address1 = ko.observable(new AddressClass()); 
self.address2 = ko.observable(new AddressClass()); 
self.address3 = ko.observable(new AddressClass()); 

每個地址*觀測值有其自己的視圖/形式,通過它們被更新的。當打開視圖時,當前地址可觀察值設置爲self.searchResult.addresses [0]

問題是,當更新任何地址* observable時,原始的self.searchResult.addresses [0]也被更新。

也許一個愚蠢的問題,但我花了一些時間試圖解決它沒有運氣,所以任何輸入將不勝感激!

回答

0

所以,如果我跟着你想說明什麼,你可能有類似下面的代碼:

self.address1(self.searchResult.addresses[0]); 

並填充編輯地址1視圖時這就是所謂的。

因此,當地址1這一觀點編輯後,self.address1觀察到的被更新,但這樣是self.searchResult.addresses[0],我猜你想self.searchResult.addresses[0]保持不變,所以你可以參考它,看看有什麼變化,或者一些類似場景。

如果我有這個權利,那麼你會想要做的東西等同於以下:

var searchResultAddress = self.searchResult.addresses[0]; 
var address1ToEdit = new AddressClass(); 
address1ToEdit.addressLine1(searchResultAddressInJS.addressLine1); 
address1ToEdit.addressLine2(searchResultAddressInJS.addressLine2); 
address1ToEdit.city(searchResultAddressInJS.city); 
address1ToEdit.country(searchResultAddressInJS.country); 
// etc... 
self.address1(address1ToEdit); 

如果地址由self.searchResult.addresses[0]舉行的性能也可觀測量,然後你」 LL可能需要到第一線更改爲以下:

var searchResultAddress = ko.toJS(self.searchResult.addresses[0]); 

關鍵是要填充多數民衆贊成被填充了與已填充了其他地方沒有可觀測量值的AddressClass視圖中的地址。

希望這會有所幫助。但是,如果這個答案不能讓你滿意,請告訴我,我很樂意進一步幫助你,但是在那個時候,小提琴會幫助你。

+0

我試過了,但沒有工作。我也使用ko.mapping插件,也許這是問題? – Xatep

+0

可能,但是,再次,我很難說沒有看到代碼。你能提供一個演示問題的小提琴嗎? – jimmym715

相關問題