我这里有这段代码
orderTotal = ko.computed(function () {
return parseFloat($("#PurchaseDomainSuffix option:selected").text().match(/[0-9]+(?:\.[0-9]*)?/g)) || 0;
}
在页面加载时从字符串中取出数值。 (从下拉列表中加载)但是当列表被更改时,我无法弄清楚如何更新orderTotal值。
我是淘汰赛的新手我正在研究ko.computed的写函数。不确定我是否正在寻找正确的方向。 在更改下拉列表后,如何使用新值覆盖页面加载中的值。
答案 0 :(得分:2)
Knockout对下拉菜单有很好的支持。
您可以使用options
绑定生成列表,使用value选项进行正确选择。这是一个简单的例子。
function ViewModel() {
var self = this;
self.list = [{
name: "Breakfast",
time: 'Morning'
},
{
name: "Lunch",
time: 'Noon'
},
{
name: "Dinner",
time: 'Evening'
}
];
self.selectedItem = ko.observable();
self.selectedComputed = ko.computed(function() {
var selectedItem = self.selectedItem();
return "I'll eat at " + selectedItem;
});
}
ko.applyBindings(new ViewModel());

<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<select data-bind="options: list, value: selectedItem, optionsText: 'name', optionsValue: 'time'"></select>
<br>
<span data-bind="text: selectedItem"></span>
<br>
<span data-bind="text: selectedComputed"></span>
&#13;