我有一个半复杂的用户界面,其中包括用户输入的某些值的运行总计,以确保它们加起来达到100%。由于每个数据项本身并不知道所有其他数据项,因此我在主模型中使用计算的observable来处理此计算,而不是实际数据项本身上的observable。
我注意到即使用户过滤列表(通过ajax调用),即使我用单个项目替换列表,似乎还有计算的observables与所有现在丢失的项目相关,我猜它是因为我使用函数来生成“动态”可观察量。
我试图在我的主'表'上使用ko.cleanNode,但这只是阻止了它的刷新。在这种情况下处理计算的可观察量的正确方法是什么?
视图:
<span class="remainderText" data-bind="text:$root.getFieldTotal($data,'Customer')"></span>
模特:
self.getFieldTotal = function (record, field) {
return ko.computed(function () {
.. some code here ...
});
}
当我去更换驱动foreach的项目数组时,计算出的observable会像所有旧项目仍然悬空一样触发。
答案 0 :(得分:0)
我对knockoutjs很新,所以我无法解释为什么这样做有效,但是如果你让你的getFieldTotal方法只是一个普通函数,而不是ko.computed,那么你就得到了你需要的行为。看到这个小提琴......