Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 敲除复制可观察数组问题_Javascript_Asp.net Mvc 3_Knockout.js_Knockout Mapping Plugin_Ko.observablearray - Fatal编程技术网

Javascript 敲除复制可观察数组问题

Javascript 敲除复制可观察数组问题,javascript,asp.net-mvc-3,knockout.js,knockout-mapping-plugin,ko.observablearray,Javascript,Asp.net Mvc 3,Knockout.js,Knockout Mapping Plugin,Ko.observablearray,我试图将一个可观察数组复制到另一个可观察数组。我有一个表单,它有一个账单地址、发货地址和复选框,当用户点击它时,它允许用户将所有发货信息复制到账单地址。我遇到的问题是,当我将一个可观察数组复制到另一个时,每当我对其中一个可观察数组进行更改时,两个可观察数组都会得到更新。我想保持两个可观察的数组值分开,只是将值从一个复制到另一个 我的可观测阵列是使用以下方法设置的: 然后,要在输入配送信息并单击“使用配送地址”后将配送信息复制到账单: self.CopyAddress = function()

我试图将一个可观察数组复制到另一个可观察数组。我有一个表单,它有一个账单地址、发货地址和复选框,当用户点击它时,它允许用户将所有发货信息复制到账单地址。我遇到的问题是,当我将一个可观察数组复制到另一个时,每当我对其中一个可观察数组进行更改时,两个可观察数组都会得到更新。我想保持两个可观察的数组值分开,只是将值从一个复制到另一个

我的可观测阵列是使用以下方法设置的:

然后,要在输入配送信息并单击“使用配送地址”后将配送信息复制到账单:

 self.CopyAddress = function() {
    self.billingAddress(self.shippingAddress());
    }
我还尝试了以下方法:


非常感谢您的帮助。

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

比如:

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

示例:

感谢您的快速响应,这起到了作用。为什么您最初的答案不起作用,只是好奇?我没有测试第一个答案,因为github暂时关闭,所以映射插件没有加载到JSFIDLE中。当您拥有一个对象并通过mapping插件发送它时,根将不可观察,因此您不必将其视为可观察对象(对于数组,它确实创建了一个observableArray)。因此,由于我们不会用新的可观察对象替换整个可观察对象,因此我们需要更新现有可观察对象的值,因为它们已经绑定在UI中。希望这是有道理的。
self.copyAddress = function() {
    var clean = ko.mapping.toJS(self.shippingAddress);
    ko.mapping.fromJS(clean, self.billingAddress);
};