Jquery 淘汰赛';更新后不能重新计算

Jquery 淘汰赛';更新后不能重新计算,jquery,knockout.js,knockout-2.0,ko.observablearray,computed-observable,Jquery,Knockout.js,Knockout 2.0,Ko.observablearray,Computed Observable,我正在使用一个可观察的“部分”数组,其中包含一个可观察的“Vol”。我目前有每个部分的体积以及显示的总量。当应用程序启动时,正确添加总金额。但是,当我更改零件的体积时,不会重新计算总量 HTML: <ul> <li data-bind="foreach: Parts"> <input data-bind="value: Vol" /> <br/> </li> </ul> <br/&g

我正在使用一个可观察的“部分”数组,其中包含一个可观察的“Vol”。我目前有每个部分的体积以及显示的总量。当应用程序启动时,正确添加总金额。但是,当我更改零件的体积时,不会重新计算总量

HTML:

<ul>
    <li data-bind="foreach:  Parts">
        <input data-bind="value: Vol" />
<br/>
    </li>
</ul>

<br/>
<br/>
<span data-bind="text: fullVol "></span>

这是我的JSFIDLE:

当您使用
值时:Vol
绑定敲除不会将您的输入转换为整数,而是将用户输入的数据存储为字符串

因此,在计算总数之前,需要将其解析为整数:

$.each(self.Parts(), function() { total += (parseInt(this.Vol()) ) })
固定的

现在,因为您正在进行解析,所以当用户输入非数字输入时,您不应该忘记处理该情况

但是,您可以很容易地编写一个抽象的语法分析

或者您可以使用
ko.extenders
。文档中也有一个示例

$.each(self.Parts(), function() { total += (parseInt(this.Vol()) ) })