gpt4 book ai didi

javascript - 更新部分映射的 ko 模型

转载 作者:行者123 更新时间:2023-11-28 19:17:12 24 4
gpt4 key购买 nike

如何只更新映射模型的一部分?

var model = { foo: { bar: "hello" }, moo: { la: "world" }};
var mapped = ko.mapping.fromJS(model);

映射结果:

mapped =
{
__ko_mapping_object__ : object,
foo: {
bar : function c()
},
moo: {
la: function c()
},
__proto__ : object

}

因为 foomoo 是不可观察的,如果我这样做的话:

mapped.foo = { "bar" : "changed" };

mapped.foo = ko.mapping.fromJS({ "bar" : "changed" });

对象已更新,但未触发重新绑定(bind)。

有什么想法吗?我需要在更新模型的一部分时进行绑定(bind)。

我的一个想法是抓取部分模型,然后强制重新绑定(bind)。

triggerObjectRebind(mapped.foo);

function triggerObjectRebind(model) {
for (var property in model) {
if (model.hasOwnProperty(property)) {
if (typeof model[property] === "object") {
triggerObjectRebind(model[property]);
} else if (typeof model[property] === "function") {
model[property].valueHasMutated();
}
}
}
}

最佳答案

进行更新时,需要传入映射对象作为参数。相应的属性将被更新。

var model = {
foo: { bar: "hello" },
moo: { la: "world" }
};
var mapped = ko.mapping.fromJS(model);

var newFoo = { bar: "changed" };
// do the update on the foo object
ko.mapping.fromJS(newFoo, {}, mapped.foo);

关于javascript - 更新部分映射的 ko 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29595351/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com