2014-10-07 79 views
0

我有兩個相同類型的模型,型號A和模型B。我想更新型號A,其型號爲B。這兩種模式都綁定到用​​戶界面的不同區域。從另一個模型更新一個模型

有沒有辦法做到更新而不必去財產的財產?

// address = model A 
// this.editingBillingAddress() = model B 

var address = ko.utils.arrayFirst(this.userAddresses(), function (address) { 
    return address.addressId() == 123; 
}); 

//address = this.editingBillingAddress(); // this does nothing. nothing in the UI updates 

// this works but I must explicitly set every property 
address.name(this.editingBillingAddress().name()); 
address.address1(this.editingBillingAddress().address1()); 
address.address2(this.editingBillingAddress().address2()); 
// .... and so on until the fingers bleed 

回答

1

您可以使用映射插件先轉換爲JavaScript對象,然後映射到一個對象,具有可觀:http://knockoutjs.com/documentation/plugins-mapping.html

var jsAddress = ko.mapping.toJS(self.address()); 
var address = ko.mapping.fromJS(jsAddress); 
self.editingBillingAddress(address); 

http://jsfiddle.net/Wk7dr/6/

+0

在此情況下不起作用。地址不是可觀察的。 – TugboatCaptain 2014-10-08 01:51:46

+0

而不是self.address()你可以使用地址。 – 2014-10-08 03:14:09

相關問題