我有一个Knockout视图模型,它利用Knockout Validation来执行vm属性的验证。我正在尝试从特定订户功能中更改“max”验证器值。这是我的尝试,我将跟随对我所看到的行为的解释。
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对象设置我的属性来解决这个问题,但这并没有解决问题。有没有人知道一种方法来删除增强的击倒观察的扩展器?还有其他建议吗?
谢谢, Vinney