无法使用Knockout Validation验证自定义组

时间:2014-07-17 09:03:23

标签: javascript validation knockout.js knockout-validation

我无法弄清楚如何让Knockout Validation plugin验证自定义的viewmodel属性选择。 然而,我可以调用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()时,错误变量不包含任何错误,但当我致电self.IsEntireModelValid()时,我得到了正确的答案。

有人能指出我做错了吗?

1 个答案:

答案 0 :(得分: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/