2013-04-05 3 views
1

Я попытался определить несколько правил пользовательской проверки под наблюдаемым массивом, я имел в виду https://github.com/ericmbarnard/Knockout-Validation/wiki/Custom-Validation-Rules.несколько валидаторов нокаута на наблюдаемомarray

Ниже мой observablearray с вызовами проверки:

this.WeeklyData = ko.observableArray([]).extend({ 
    validation: [ 
     { 
      validator : fminIncrements, 
      message: 'use 15 min increments' 
     }, 
     { 
      validator: ValidateMinMax, 
      message: "Invalid min/max value" 
     } 
    ] 
    }); 

var ValidateMinMax = function (valueArray) { 
var check = true; 
ko.utils.arrayFirst(valueArray, function (value) { 
    if (parseInt(value.Val(), 10) < 0 || parseInt(value.Val(), 10) > 168) { 
     check = false; 
     return true; 
    } 
}); 
return check; 
}; 

var fminIncrements = function (valueArray) { 
var check = true; 
ko.utils.arrayFirst(valueArray, function (value) { 
    if (parseInt(value.Val(), 10) % 15 !== 0) { 
     check = false; 
     return true; 
    } 
}); 
return check; 
}; 

, когда я делаю это только первое правило пожары. Я отлаживал, и он даже не попал во второй. Есть идеи?

Заранее благодарим за любую помощь.

ответ

1

Я верю, потому что вы используете ko.utils.arrayFirst(). Если вы используете ko.utils.arrayForEach() вместо этого, чтобы проверять каждый случай, то он не должен возвращаться при первом вхождении.