有时候我需要绑定对象。我喜欢那样。
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保存编辑表单的原始值以检查更新的数据,并仅将编辑后的值更新到服务器。
答案 0 :(得分:0)
这是预期的行为。您将obj
的引用传递给obs
可观察对象。如果您希望obj
保留原始值,则应克隆它。
如果您使用的是jQuery,可以使用extend
克隆对象:
var obj = {id: null, name: null}
var cloneOfObj = jQuery.extend(true, {}, obj);
var obs = ko.observable(cloneOfObj);