2013-10-16 7 views
4

2 부분으로 구성된 녹아웃 양식이 있습니다. 첫 번째 부분을 채우면 두 번째 부분이 숨겨집니다. 첫 번째 파트를 완료하고 "계속"을 클릭하면 첫 번째 파트가 숨겨지고 두 번째 파트가 표시됩니다. 첫 번째 입력 집합을 확인하고 오류가없는 경우 다음 부분을 계속 진행할 수 있기를 원합니다.녹아웃 유효성 검사 오류 검사

나는 내가하려고하는 공식 github 페이지에 this을 찾았습니다.

이렇게하면 오류가 감지되지 않습니다. 두 번째 부분으로 계속됩니다.

그러나이 방법을 사용하면 효과가 있지만 모든 것을 확인하려고 시도합니다. 입력의 두 번째 세트가 비어 있기 때문에 그냥 거기에 달려 있습니다.

self.continue = function(){ 
    self.errors = ko.validation.group(self); 
    if (self.errors().length == 0) { 

    } 
    else{ 
     self.errors.showAllMessages(); 
    } 
} 
+0

이렇게하면 첫 번째 방법으로 작동하게됩니다. 두 번째 방법을 사용하는 이유는 무엇입니까? 두 개의 개별 뷰 모델을 사용하고 두 가지 유효성 검사 규칙 그룹을 사용하는 것이 좋을까요? –

+0

무슨 뜻인지 잘 모르겠습니다. 나는 내가 보여준 것과 함께 유효성 검사 또는 전체 유효성 검사를 얻지 못합니다. 두 개의 분리 된 뷰 모델을 만들 수 있다고 생각합니다. 그런 식으로 생각하지 않았습니다. 그럼에도 불구하고 필자는 필자가 문서에서 그런 식으로 표시 될 때 왜 필자의 예제가 작동하지 못하는지 혼란 스럽다. – user1852176

+0

질문을 읽을 때 첫 번째 방법이 효과가 없었던 이유가 아직 명확하지 않았습니다. –

답변

15

코드가 작동하지 않는 데는 몇 가지 근본적인 이유가 있습니다. 첫 번째 예제에서는 이미 뷰 모델의 컨텍스트에 있으므로 ReserveViewModel.firstName을 사용할 필요가 없으며 두 번째 예제에서는 'self'내의 모든 내용을 검사합니다. 확인.

깊은 유효성 검사 - -

function Person(firstname, lastname) { 
    var firstName = ko.observable(firstname).extend({ required: true }); 
    var lastName = ko.observable(lastname).extend({ required: true }); 
} 

function ReserveViewModel(){ 

    self.person = ko.observable(new Person('John', 'Jingleheimer')); 

    self.continue = function(){ 
     var errors = ko.validation.group(self.person, { deep: true }); 
     if (errors.length == 0) { 
      //display second div 
     } 
     else{ 
      self.errors.showAllMessages(); 
     } 
    } 
} 

이 사람의 모든 속성을 확인하고 두 가지 방법 (KO.Validation와 함께 일 간략를 가진 내가보기로)이 고양이를 피부 쉬운 방법이 있습니다 유효성을 확인하는 '하위'속성입니다.

다음 예는 단순히에 대해 확인하는 객체의 배열을 생성하는 것입니다 -

function myViewModel() { 
    var self = this; 
    self.firstName = ko.observable().extend({ required: true }); 
    self.lastName = ko.observable().extend({ required: true }); 
    self.someOtherProperty = ko.observable().extend({ required: true }); 

    var firstStepValidation = [ 
     self.firstName, 
     self.lastName 
    ]; 

    var secondStepValidation = [ 
     self.someOtherProperty 
    ]; 

    self.continue = function(){ 
     var errors = ko.validation.group(firstStepValidation); 
     if (errors.length == 0) { 
      //display second div 
     } 
     else{ 
      self.errors.showAllMessages(); 
     } 
    } 
} 

이것은 당신 '청크'테스트 할 배열에 당신의 관찰 가능한 대상을 수 있습니다. 이것은 아마도 별도의 뷰 모델을 생성하는 것보다 쉽습니다.

+0

고마워요, 두 번째 "덩어리"예제는 제가 찾고있는 것입니다. – user1852176