从Knockout Observable中移除Extender(敲除验证)

我有一个Knockout视图模型,它利用Knockout验证来执行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 });
});

请注意,我试图附加验证(数量)的observable属性是父可观察对象(inventoryToPick)的属性。 现在,我所看到的行为是将验证规则添加到属性中,但是,看起来最低值胜出。 换句话说,如果最大值规则在第一次通过时设置为30,然后在下一次通过时设置为10,则两次通过都将正确执行验证。 但是,如果在下一遍中,我试图将最大值规则设置回30(或任何大于10的值),则最大值10将继续执行。

我想我可以通过设置我的属性,以一个新的ko.observable对象初始化适当的最大值验证,但没有解决问题,我可能会侧步步骤这个错误。 有谁知道一种方法来删除扩展敲除可观察的扩展? 还有其他建议吗?

谢谢,Vinney

链接地址: http://www.djcxy.com/p/50139.html

上一篇: Remove Extenders from in Knockout Observable (Knockout Validation)

下一篇: Knockoutjs Update child when parent's observable changes