Validation 使用敲除验证重新评估依赖字段上的错误消息

Validation 使用敲除验证重新评估依赖字段上的错误消息,validation,knockout.js,knockout-validation,Validation,Knockout.js,Knockout Validation,所以我想用敲除验证来验证。我制作了这把小提琴来演示我的问题: 当我更改“数量”时,我已经收到“双倍数量”的错误消息,我希望它更新错误消息。当验证有效时,它似乎会消失,但如果仍然无效,它不会更新 是否可以通过敲除验证来重新评估文本?如果是,怎么做?它似乎要进行一些重新评估,因为当字段有效时,错误就会消失 例如: 输入2的数量 在双倍数量中输入2,显示至少必须为4的错误 在数量中输入3,双倍数量的错误消息仍然是 同样的 在数量中输入1,双倍数量的错误消息消失 以下是JSFIDLE代码: <di

所以我想用敲除验证来验证。我制作了这把小提琴来演示我的问题:

当我更改“数量”时,我已经收到“双倍数量”的错误消息,我希望它更新错误消息。当验证有效时,它似乎会消失,但如果仍然无效,它不会更新

是否可以通过敲除验证来重新评估文本?如果是,怎么做?它似乎要进行一些重新评估,因为当字段有效时,错误就会消失

例如:

  • 输入2的数量
  • 在双倍数量中输入2,显示至少必须为4的错误
  • 在数量中输入3,双倍数量的错误消息仍然是 同样的
  • 在数量中输入1,双倍数量的错误消息消失
  • 以下是JSFIDLE代码:

    <div id="vm">
      <span>Quantity</span>
      <input type="number" data-bind="value: quantity"/><br/>
      <span>Double quantity</span>
      <input type="text" data-bind="value: doubleQuantity"/>
    </div>
    
    ko.validation.registerExtenders();
    var Vm = function(){
        var self = this;
        self.quantity = ko.observable().extend({ max: 5 });
        self.doubleQuantity = ko.observable().extend({validation: {
                    validator: function (val) {
                        this.message = 'must be at least ' + self.quantity() * 2
                        return val >= 2 * self.quantity();
                    },
                    message: ''
                } });
    };
    ko.applyBindings(new Vm(), document.getElementById('vm'));
    

    双倍数量 ko.validation.registerExtenders(); var Vm=函数(){ var self=这个; self.quantity=ko.observable().extend({max:5}); self.doubleQuantity=ko.observable().extend({验证:{ 验证器:函数(val){ this.message='必须至少为'+self.quantity()*2 返回值>=2*自身数量(); }, 消息:“” } }); }; applyBindings(newvm(),document.getElementById('Vm');

    使用和

    如果相关字段被修改,则错误消息似乎不会得到更新(已尝试,但无法使其工作)

    一种解决方法是触发对doubleQuantity的重新评估,每当依赖项发生变化时,通过调用可观察项上的
    valueHasMutated
    ,模拟该值已发生变化。在VM内部和末尾添加以下内容:

    self.quantity.subscribe(function(){
      self.doubleQuantity.valueHasMutated();
    });
    

    工作

    如果相关字段被修改,则错误消息似乎不会得到更新(已尝试,但无法使其工作)

    一种解决方法是触发对doubleQuantity的重新评估,每当依赖项发生变化时,通过调用可观察项上的
    valueHasMutated
    ,模拟该值已发生变化。在VM内部和末尾添加以下内容:

    self.quantity.subscribe(function(){
      self.doubleQuantity.valueHasMutated();
    });
    

    工作

    您需要使用这些过时的库吗?我想这一个会有帮助:您需要使用这些过时的库吗?我想这一个会有帮助:我实际上试图像这样解决它,但我不知道valueHasMutated()函数。谢谢实际上,我试图像这样解决它,但我不知道valueHasMutated()函数。谢谢