Knockout复制可观察数组问题

时间:2012-10-10 17:27:50

标签: javascript asp.net-mvc-3 knockout.js knockout-mapping-plugin ko.observablearray

我正在尝试将一个可观察数组复制到另一个可观察数组。我有一个表单,其中包含帐单邮寄地址,送货地址和复选框,点击该复选框后,用户可以将所有送货信息复制到其帐单邮寄地址。我遇到的问题是当我将一个可观察数组复制到另一个时,然后每当我对observable进行更改时,两个可观察数组都会更新。我想保持两个可观察的数组值分开,只需将值从一个复制到另一个。

我的可观察数组是使用mapping plugin

设置的
self.billingAddress = ko.mapping.fromJS(InitialEmptyAddressModel);
self.shippingAddress = ko.mapping.fromJS(InitialEmptyAddressModel);

然后在输入送货信息并点击“使用送货地址”后将送货信息复制到开票:

 self.CopyAddress = function() {
    self.billingAddress(self.shippingAddress());
    }

我也尝试过以下方法: What is the best way of cloning/copying an observablearray in knockoutJS?

任何帮助将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:2)

你真的不想复制shippingAddress内的观察者。您可能希望获得它的干净版本,然后将其应用于其他映射对象。

类似的东西:

self.copyAddress = function() {
    var clean = ko.mapping.toJS(self.shippingAddress);
    ko.mapping.fromJS(clean, self.billingAddress);
};

示例:http://jsfiddle.net/rniemeyer/NdS5M/