Knockout - 可观察的值不更新

时间:2013-04-22 11:41:00

标签: knockout.js knockout-2.0 knockout-validation

我已经在之前的帖子中提出了这个问题,但我并不接近决议:

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,但屏幕上的值仍显示为输入的值。

感激地收到任何帮助

约翰

0 个答案:

没有答案