我有一个 Knockout 视图模型,它利用 Knockout Validation 来执行 vm 属性的验证。我正在尝试从特定订阅者函数中更改“最大”验证器值。这是我的尝试,接下来我将解释我所看到的行为。
me.inventoryToPick().key.subscribe(function () {
if (!me.inventoryToPick().key()) {
me.inventoryToPick().location = null;
return;
}
var item = ko.utils.arrayFirst(inventory, function(inv) {
return inv.InventoryKey === me.inventoryToPick().key();
});
me.inventoryToPick().quantity = ko.observable().extend({ max: item.QuantityAvailable });
});
请注意,我尝试附加验证的可观察属性(数量)是父可观察对象(inventoryToPick)的属性。现在,我看到的行为是将验证规则添加到属性中,但是,似乎最低值获胜。换句话说,如果最大值规则在第一次通过时设置为 30,然后在下一次为 10,则验证将在两次通过时正确执行。但是,如果在下一次通过时,我尝试将最大值规则设置回 30(或任何大于 10 的值),则继续强制执行最大值 10。
我认为我可以通过使用新的 ko.observable 对象设置我的属性来避开这个错误,该对象使用正确的最大值验证进行初始化,但这并没有解决问题。有谁知道去除扩展器以增强可观察到的淘汰赛的方法?还有其他建议吗?
谢谢,文尼