我尝试实施以下建议,但每次更新值时似乎都没有触发所需的反应。这可能是由于我的实施,因为我是 Knockout 的新手。
我有一个绑定到 TextBoxFor 的 observable (Amount)。
@Html.TextBoxFor(m => m.Amount, new { type = "number", data_bind = "value: Amount" })
当输入一个值时,需要对其进行验证以确保它不超过 999999。除此之外,如果该值小于 50,则需要将其设置为 50。每次“量的变化。
var viewModel = {
Amount: ko.observable().extend({numeric: 0, max: 999999})
};
我已经尝试实施解决方案(在我之前帖子的回答中),但我无法让这些解决方案发挥作用。
我想出的最好的方法是创建一个计算如下。这将检查输入值并在第一次尝试时正确更新。随后的值更改不会触发屏幕上的更改,但单步执行代码似乎会更新 ViewModel.Amount 值。
@Html.TextBoxFor(m => m.Amount, new { type = "number", data_bind = "value: amountMin" })
quoteVehicleViewModel.VehicleMileage = ko.observable(0);
viewModel.amountMin = ko.computed({
read: function () {
return viewModel.Amount();
},
write: function (value) {
if (value < 50) {
viewModel.Amount(50);
}
}
}).extend({ numeric: 0, max: 999999 });
** 在控制台中输入的“viewModel.Amount()”显示值为 1000,但屏幕上的值仍显示为输入的值。
感激地收到任何帮助
约翰