我想创建一个计费模块,在视图中我有一个预定义没有行的表。
当用户输入产品时,我会用相关费率填充它。当他输入数量时,我想计算该行的账单金额,即数量*费率+其他一些值。 此外,总计包括所有行的总和(以及一些税收计算)。
我想使用knockout执行此操作,因此如果用户更改行中的任何数量,行数会自动更改,总计也会更改。当用户添加产品或删除产品时,会发生同样的事情。但我对如何创建视图模型感到困惑。
请帮助!!
var rows = ko.observableArray([]);
function billRow(rate)
{
var self = this;
self.prodQty = ko.observable(0);
self.prodRate = ko.observable(rate);
self.making = ko.observable(0);
self.rowTotal = ko.computed(function () {
return (self.prodQty * self.prodRate) + self.making;
});
}
function viewmodel() {
var self = this;
self.rows = rows;
self.grossTotal = ko.computed(function () {
var total = 0;
for (var i = 0; i < self.rows().length;i++) {
total += self.rows()[i].rowTotal();
}
return total;
});
self.Vat = ko.computed(function () { return (self.grandTotal * vatRate) / 100; });
self.grandTotal = ko.computed(function () { return self.grossTotal + self.Vat; });
}
ko.applyBindings(new viewmodel());
问题是我的表已经用10行表示了......我怎么把行绑定到这个视图模型
答案 0 :(得分:1)
淘汰赛团队在操纵馆藏方面发布了good tutorial。
您基本上从包含所需数据的BillingLine对象开始。 在该对象中,您有一个计算字段。该字段将捕获附加到其上的变量的变化,并根据其值重新计算自己。
接下来是持有BillingLines的集合。每一行都是一个对象......等等。
希望这有帮助。