2012-10-23 5 views
29

knockout.validation 플러그인을 사용하려고합니다. 내가 현재 개체에 대한 유효성 검사 그룹에 이름이 오류를 만든 위의 뷰 모델에서ko.validation.group 함수 사용 방법

function exampleViewModel() { 
    this.P1 = ko.observable().extend({ required : true }); 
    this.P2 = ko.observable().extend({ required : true }); 
    this.P3 = ko.observable().extend({ required : true }); 
    this.P4 = ko.observable().extend({ required : true }); 

    this.errors = ko.validation.group(this); 
}  

: 나는 exampleViewModel를 만들었습니다. 이제이 유효성 검사 특성보다 오류 특성 메시지가 4보다 작은 임의의 유효성 검사 특성에 대해 유효성 검사 규칙이 실패하는 경우

My question is, 내가 단지 3 개의 속성으로 구성된 유효성 검사 그룹을 만들고 싶다면 (P1, P2, P3)을 어떻게 할 수 있습니까?

답변

53

이것은 잘 작동했습니다. this으로 그룹화하는 대신 유효성을 검사하려는 속성을 포함하는 프록시 개체를 만듭니다. 이렇게하면

this.errors = ko.validation.group({ 
    P1: this.P1, 
    P2: this.P2, 
    P3: this.P3 
}); 

, validatedObservable 대신 group의 사용을 고려하십시오. 오류가 발생했을뿐만 아니라 isValid 속성을 사용하여 모든 속성이 유효한지 여부를 집합 적으로 확인할 수 있습니다. 특정 관찰 가능한 유효성을 검사 documentation에 올바른 방법 바와 같이

this.validationModel = ko.validatedObservable({ 
    P1: this.P1, 
    P2: this.P2, 
    P3: this.P3 
}); 

// is the validationModel valid? 
this.validationModel.isValid(); 
// what are the error messages? 
this.validationModel.errors(); 
+0

이 Durandal 관찰 가능한 플러그인 검증 문제를 디버깅하기 위해이 방법을 사용합니다. 'this.errors = ko.validation.group ({P1 : observable (this, 'P1')});'나는 getter/setter를 감지하고 그에 따라 대응해야한다고 생각하지만 적어도 검증 작업을 증명했다. – MrYellow

11

은 다음과 같습니다

this.errors = ko.validation.group([this.P1, this.P2, this.P3]); 
+6

문서에서 : "첫 번째 매개 변수는 배열 일 필요는 없으며 하나의 객체 만있는 경우 배열로 래핑하지 않고 맨손 개체로 전달할 수 있습니다." –

+0

설명서 링크가 있습니다. – Alex