1

有时我需要绑定对象。我喜欢那样。

var obj = {id: null, name: null}
var obs = ko.observable(obj);

然后,当我更改 obs 中的某些值时, obj 也会更改。就像这样:

obs().id = 1;
console.log(obj.id)

输出

Object { id=5, name=null }

是预期的吗?我使用 obj 来保留编辑表单的原始值以检查哪些数据已更新,并且仅将已编辑的值更新到服务器。

4

1 回答 1

0

这是预期的行为。你传递了objobsobservable 的引用。如果你想obj保留原始值,你应该克隆它。

如果您使用的是 jQuery,则可以使用extend克隆对象:

var obj = {id: null, name: null}
var cloneOfObj  = jQuery.extend(true, {}, obj);
var obs = ko.observable(cloneOfObj);
于 2012-11-09T12:17:08.957 回答