使用下面的代码,我想建立一个使用input type="number"
添加的项目的总成本。
<div data-bind="foreach: availableItems()">
<br />
<input type="number" data-bind="event: {change: $parent.itemCountChange}" min="0" step="1" value="0" />
<label data-bind="text: name"/>
</div>
<label id="totalCost" data-bind="text: totalCost" />
JS:
var refreshmentsModel = function ref() {
var self = this;
self.totalCost = ko.observable(0);
self.addedItems = ko.observableArray();
self.availableItems = ko.observableArray([{name: "Tea", price: 3.00}, {name: "Coffee", price: 4.00}, {name: "Cake", price: 5.00}]);
self.itemCountChange = function(d) {
self.addedItems.push(d);
alert("Added items now: " + self.addedItems().length)
}
};
ko.applyBindings(new refreshmentsModel());
但是我不能知道是增加还是减少,所以我的addedItems
总是会得到一个新的条目,即使计数减少了。我试着向number输入的值添加一个绑定,但是这样会绑定到foreach中的每个输入,所以改变一个就会改变所有的输入。
也许它会更容易重新设计,并有两个按钮,一个为添加和一个为删除,但如果任何人有任何想法,对上述将是伟大的!
谢谢
PS.对不起,我试图用代码创建一个codepen,但它一直给我错误'ko is not defined',即使我在设置窗口中添加了knockout引用。
1条答案
按热度按时间b4qexyjb1#
我认为所需要发生的就是在可用项的数据上添加一个可观察字段,它保存了被订购的东西的值,然后有一个计算的可观察字段,当某个东西被订购时,它进行计算。
就像这样。
第一个