首页 > 解决方案 > KnockoutJS:为现有模型分配一个新模型,例如(model.order = neworder)不会改变视图中的值,为什么?

问题描述

我有这个淘汰模型,它有一个具有很多属性的可观察对象

model.object{}

而不是像这样单独更改属性:

model.object.property1("cool");

我决定将它重新评估为一个新对象

model.object = new object;

当我检查控制台时,它更新了现有的模型对象,但是视图中的绑定

<span class="ml-1" data-bind="text:object.property1">10</span>

没有改变。

为什么是这样 ?

标签: knockout.js

解决方案


那是因为代码ko.applyBindings()已经将对象绑定到了 html,而且它只发生了一次。如果您这样做,绑定将丢失model.object = new object;

如果要在一行中更新整个对象,可以尝试使用映射插件

ko.mapping.fromJS(objectWithSamePropertiesAndNewValues, model.object);

推荐阅读