我已经在之前的帖子中提出了这个问题,但我并不接近决议:
Knockout - Can't update Observable value using Subscribe (due to extension validation)
我有一个可观察的(Amount)绑定到TextBoxFor。
@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,但屏幕上的值仍显示为输入的值。
感激地收到任何帮助
约翰