敲除JS中每个带有计算字段的数据绑定
Knockout JS foreach data-binding with computed fields
我试图使用Knockout.js在每一行绑定3个字段的网格:净价格(文本框),税额(标签),总价(文本框).
一旦净价格或总价格发生变化,所有字段都会自动计算。计算很简单:net price = total price - tax amount; total price = net price + tax amount; tax amount = taxrate (const) * net price
单个实体的这些绑定如下所示:http://jsfiddle.net/ruslans/yEDRT/
但是我如何在我不知道的observable array
中为整个列表做呢?
TaxRate
是每行不变的,但可以不同(它来自源数据)。
+。所有数字字段必须格式化为小数点后2位,因此该函数。这是我目前得到的:
<table>
<thead>
<tr>
<th> </th>
<th>Net Price</th>
<th>Tax Band</th>
<th>Tax Amount</th>
<th>Total Price</th>
</tr>
</thead>
<tbody data-bind="foreach: OptionsModel.AvailableDealerFitOptions">
<tr>
<td>
<label class="checkbox">
<input type="checkbox" class="optionCheck" /> <span data-bind="text: Description"></span>
</label>
<input type="hidden" class="optionTaxRate" data-bind="value: TaxRate" />
</td>
<td>
<input type="number" min="0" max="99999999.99" step="0.01" data-bind="value: $root.formatNumber(NetPrice)" />
</td>
<td> <span data-bind="text: TaxBandDisplayName"></span>
</td>
<td> <span class="uneditable-input" data-bind="text: $root.formatNumber(TaxAmount)"></span>
</td>
<td>
<input type="number" min="0" max="99999999.99" step="0.01" data-bind="value: $root.getTotalDealerFitOptionPrice($data)" />
</td>
</tr>
</tbody>
</table>
http://jsfiddle.net/ruslans/k7tK3/2/你以前做过类似的事情吗?如果是这样,你能告诉我如何才能做到这一点吗? 你的问题是你正在使用一个对象的可观察数组-这将得到重新计算只有当数组的大小改变,而不是数组的内容!
你想要的是一个ko.observable数组。然后,当单个值发生变化时,将重新计算您的ko.computed函数的值。如果你有一个动态的项目列表要求和,那么使用一个可观察对象的可观察数组。
希望有帮助!
相关文章:
- 从Rally获取一个特定的标记,以便计算另一个字段中的值
- xpages:计算字段中的HTML表
- 实时计算字段ExtJS
- javascript计算字段比较算法
- 获取javascript计算字段时遇到问题
- AngularJS从隐藏字段中计算字段
- 计算字段淘汰相同的值
- 在 JavaScript 或 PHP 中按计算字段对数组进行排序
- Rails3/随着输入的变化而动态地重新计算字段
- 计算字段的Jquery if语句需要帮助
- 淘汰:自定义绑定更新不触发计算字段
- 语法防止使用@DbLookup填充计算字段
- 使用Ajax计算字段
- 敲除JS中每个带有计算字段的数据绑定
- 创建计算字段的报价摘要
- 使用Jquery或Javascript动态计算字段的划分
- 如何使xPages计算字段日期转换器只显示今天的时间
- 如何调用JQuery函数在按钮点击后计算字段
- SharePoint 列表,以编辑窗体显示计算字段
- 不同选项卡面板上的计算字段