2012-10-26 2 views
10

넉 아웃 유효성 검사를 사용하여 배열의 필드 유효성을 검사하고 있습니다. 오류 메시지가 표시되지만 isValid() 또는 ko.validation.group()을 사용할 수 없습니다. 제출을 처리하려면이 중 하나가 필요합니다. http://jsfiddle.net/mduey/hEJWJ/80/배열의 넉 아웃 유효성 검사

감사 :

여기
errors = ko.validation.group(contactList(), {deep:true}); 

는 바이올린입니다!

+0

녹아웃에 개체가 배열에 추가되는 방식에 문제가있는 것으로 보입니다. 개체가 배열 정의 내에서 만들어지고 load 메서드에서 제거되면 예상대로 작동합니다. –

답변

3

observableArray에 새 배열 요소를 추가 할 때 유효성 검사가 실행되지 않습니다. Here is quick an dirty solution which can be optimized further.

observableArray에 새 요소를 추가 할 때마다 유효성 검사를 실행하고 결과를 관찰 가능하게 두어 뷰 바인딩으로 올바르게 추적 할 수있게합니다. throttle 설정으로 더욱 향상 될 수 있으므로 모든 누름 대 배열 (실제 사이클)에서 유효성 검사가 실행되지 않습니다. 내가 현재보고있는 것처럼 ko.validation.group은 적절한 관측 가능치를 반환하지 않으므로이를 위해 래퍼를 만들어야했습니다.

5

나는 동일한 문제가 있었고 관찰 가능한 config 속성을 false로 설정하여 해결할 수 있습니다. 오류 기능을 호출 할 때마다 깊은 확인이 트리거됩니다.

ko.validation.init({ 
     grouping: { 
      deep: true, 
      observable: false //important ! Needed so object trees are correctly traversed every time so added objects AFTER the initial setup get included 
     }, 
     insertMessages: true, 
     messagesOnModified: true, 
     debug: false 
    });