我有一个半复杂的用户界面,除其他外,它保持用户输入的某些值的运行总数,以确保它们加起来达到 100%。由于每个数据项本身不知道所有其他数据项,因此我在主模型中使用计算的 observable 来处理此计算,而不是实际数据项本身的 observable。
我注意到,即使用户过滤列表(通过 ajax 调用),即使我用单个项目替换列表,似乎还有与所有现在丢失的项目相关的计算出的 observables,我猜这是因为我使用函数生成“动态”可观察值。
我试图在我的主“表”上使用 ko.cleanNode ,但这完全阻止了它的刷新。在这种情况下,处理计算的 observables 的正确方法是什么?
风景:
<span class="remainderText" data-bind="text:$root.getFieldTotal($data,'Customer')"></span>
该模型:
self.getFieldTotal = function (record, field) {
return ko.computed(function () {
.. some code here ...
});
}
当我去替换驱动 foreach 的 item 数组时,计算出的 observable 会触发,就好像所有旧的 item 仍然挂着一样。