0
如何更新映射模型的一部分?更新部分映射模型
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
}
由於foo
和moo
觀察不到,如果我這樣做:
mapped.foo = { "bar" : "changed" };
或
mapped.foo = ko.mapping.fromJS({ "bar" : "changed" });
的對象被更新但重新綁定不會被觸發。
任何想法?我需要綁定來更新模型的一部分。
我的一個想法是抓取部分模型,然後強制重新綁定。
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();
}
}
}
}
謝謝你好先生 – Gabe