【问题标题】:Unable to validate a custom group using Knockout Validation无法使用 Knockout Validation 验证自定义组
【发布时间】:2014-09-08 01:37:36
【问题描述】:

我无法弄清楚如何让Knockout Validation plugin 验证视图模型属性的自定义选择。 我可以致电isValid() 来成功验证整个视图模型。

我遵循了here 中的文档,其中涵盖了该场景,并检查了我在堆栈溢出时可以找到的所有答案。

我的代码如下所示:

function MyViewModel() {
    var self = this;

    self.myproperty = ko.observableArray().extend({ minLength: { message: 'You must specify at least one item.'} })
    self.anotherproperty = ko.observable().extend({ required: { params: true, message: 'You must supply a value.'} });

    self.IsEntireModelValid = function() {
         if (!self.isValid()) {
               self.errors.showAllMessages();
               return false;
         }
         else {
              return true;
    }

    self.IsAnotherPropertyValidOnly = function() {
         var errors = ko.validation.group(self.anotherproperty);
         if (errors.length > 0) {
            errors.showAllMessages();
            return false;
         } 
         else {
            return true;
         }
    }

当我调用self.IsAnotherPropertyValidOnly() 时,errors 变量不包含任何错误,但是当我调用self.IsEntireModelValid() 时,我得到了正确的响应。

谁能指出我做错了什么?

【问题讨论】:

    标签: javascript validation knockout.js knockout-validation


    【解决方案1】:

    您需要使用errors().length

    self.IsAnotherPropertyValidOnly = function() {
         var errors = ko.validation.group(self.anotherproperty);
         if (errors().length > 0) {
            errors.showAllMessages();
            return false;
         } 
         else {
            return true;
         }
    }
    

    http://jsfiddle.net/WY7V3/2/

    【讨论】:

    • 我认为可能是因为错误确实是一个函数,但是当我尝试它时,淘汰赛会抛出“超出最大调用堆栈大小”。听起来我的代码中的其他地方有一个递归循环?但是,您的小提琴效果很好。
    猜你喜欢
    • 1970-01-01
    • 2015-11-23
    • 2017-11-17
    • 2013-04-20
    • 2013-02-04
    • 2015-09-08
    • 2013-03-31
    • 2013-03-10
    • 2015-07-20
    相关资源
    最近更新 更多