KnockoutJS表,输入文本为行,以更新同一行的另一个单元格的值

时间:2014-11-06 05:26:52

标签: knockout.js

我是knockoutjs的新手,我只是想知道是否可以在表格行中输入文本,更新时会更改同一行的单元格的值。

模型:

public class RateData{
    private double Rate{ get; set; }
    private double RateUnit{ get; set; }
    private double TotalRate{ get{ return Rate*Unit; }
}

List<RateData> rates = new List<RateData>{
    new RateData{ Rate = 5.0, RateUnit = 1 },
    new RateData{ Rate = 5.0, RateUnit = 2 }
};

在我看来:

<tbody data-bind="foreach: Rates">
     <tr>
       <td data-bind="text: $data.Rate"></td>
       <td data-bind="value: $data.TotalRate"></td>
       <td><input type="text" data-bind="value: $data.RateUnit class="form-control" /></td>
     </tr>
</tbody>

我想让速率单位可更新,每次我对其进行更改时,它也会更新速率总计。实施例

   For Row #1

   RateUnit = 1
   Rate = 5.0

   TotalRate = RateUnit * Rate (5.0)


   For Row #2

   RateUnit = 2
   Rate = 5.0

   TotalRate = RateUnit * Rate (10.0)

请帮帮我。谢谢。

1 个答案:

答案 0 :(得分:0)

您没有关闭数据绑定。请做。 我正在使用div和Ul,你可以用表替换。

<div data-bind="foreach: Rates">
    <ul>
        <li data-bind="text: $data.Rate"></li>
        <li data-bind="text: $data.Rate * $data.RateUnit()"></li>
        <li><input type="text" data-bind="value: $data.RateUnit" class=" form-control" /></li>
    </ul>
</div>

在你的JS中。 &#39;数据&#39;成为你的榜样。

self = this;
ko.mapping.fromJS(data, {}, self)
self.Rates = ko.observableArray([
        { Rate: 5.0, RateUnit: ko.observable(0) ,TotalRate:0},
        { Rate: 6.0, RateUnit: ko.observable(0) ,TotalRate:0}
    ]);