我正在尝试使用 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/
你以前做过类似的事情吗?如果是这样,你能给我指点如何实现这一点吗?