我有以下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/
由于
答案 0 :(得分:2)
有趣的是他们必须更新网站:
这是答案。
self.totalSurcharge = ko.computed(function () {
var total = 0;
for (var i = 0; i < gifts.length; i++)
total =total+ gifts[i].price;
return total;
});
答案 1 :(得分:1)
根据文档,在使用索引器从中访问数据之前,您需要使用parantheses来访问KO包装的observable数组:
http://knockoutjs.com/documentation/observableArrays.html
尝试替换
self.PersonInfo[i].price
与
self.PersonInfo()[i].price
答案 2 :(得分:1)
我已经测试了以下代码,该代码工作正常,
修改你的html如下:
<tr>
<td> Total of price here</td>
<td data-bind="text:totalPrice"></td>
</tr>
在脚本中添加以下Computed Observable以计算总价:
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;
}
});