2

私は次のviewModelを持っています

        var viewModel = new myViewModel([{
            Name: "Name",
            price: 32,
            tax: 22,
        }, {
            Name: "Name",
            price: 32,
            tax: 22,
        }]);

データバインドがあります

       <tbody data-bind='foreach: personInfo'>

および入力:

        <td>
        <input class='required' data-bind='value: Name'/>
        </td>
        <td>
        <input class='required' data-bind='value: Price'/>
        </td>
        <td>
        <input class='required' data-bind='value: Tax'/>
        </td>

価格と税金の計算値を取得したいのですが、成功しません。:(

        self.totalSurcharge = ko.computed(function () {
        var total = 0;
        for (var i = 0; self.PersonInfo().length; i++)
        total += self.PersonInfo[i].price;
        return total;
        });

何か案が?

アップデート:

このようなもの:http://jsfiddle.net/hamsaya/9XNDH/1/

ありがとう

4

3 に答える 3

2

興味深いことに、彼らはサイトを更新する必要があります。

これが答えです。

    self.totalSurcharge = ko.computed(function () {
    var total = 0;
    for (var i = 0; i < gifts.length; i++)
    total =total+ gifts[i].price;
    return total;
    });  
于 2013-03-04T20:01:11.130 に答える
1

ドキュメントによると、インデクサーを使用してそこからデータにアクセスする前に、括弧を使用してKOでラップされた監視可能な配列にアクセスする必要があります。

http://knockoutjs.com/documentation/observableArrays.html

交換してみてください

self.PersonInfo[i].price

self.PersonInfo()[i].price
于 2013-03-04T17:29:32.703 に答える
1

私は正常に動作している以下のコードをテストしました、

以下のようにHTMLを変更します。

 <tr>
     <td> Total of price here</td>
     <td data-bind="text:totalPrice"></td>
 </tr> 

合計価格を計算するには、スクリプトに以下のComputedObservableを追加します。

self.totalPrice = ko.computed({
    read: function() {
    var totalAmount = null;
    for(var i=0 , j=self.gifts().length ; i < j ; i++ )
    {
         totalAmount =Number(totalAmount)+ Number(self.gifts()[i].price);
    }
    if(totalAmount == 0){
        totalAmount = '0.00'
        }
    return totalAmount;
}
});
于 2013-03-05T06:58:44.303 に答える