2016-09-24 5 views
0

간단한 형태로 knockoutjs와 녹아웃 검증을 사용하여 다음 바이올린을 확인하십시오. 처음에 "go"를 클릭하면 유효성 검사 메시지가 나타나지 않는 이유는 무엇입니까?녹아웃 검증이 필요하지 않은 이유는 처음입니까?

자바 스크립트 :

var viewmodel = function() { 
    var self = this; 
    self.name = ko.observable(null).extend({ 
     required: true 
    }); 
    self.validation = ko.validatedObservable({ 
     name: self.name 
    }); 
    self.go = function() { 
     console.log(self.name()); 
     self.name.isValid(); 
    }; 
} 
ko.applyBindings(new viewmodel()); 

HTML :

<input type="text" data-bind="value:name" /> 
<button type="button" data-bind="click:go"> 
    go 
</button> 

Fiddle

+0

는 "처음에"무엇을 의미합니까 : 뭔가가 무효 인 경우

대신, 이동 클릭 이벤트에서 호출 showAllMessages를 시도? 후속 클릭으로 유효성 검사 메시지가 나타나지 않습니다. – Jeroen

답변

1

나는 여기에 문제가 유효성 검사기가 실행하는 트리거 아무것도 현재이 없다고 생각합니다.

기본적으로 KO 유효성 검사기 플러그인은 값 변경시 트리거됩니다. 초기로드시 입력 값이 null이고 정의 된 클릭 이벤트가이 값을 변경하지 않아 유효성 검사자가 트리거됩니다.

var viewmodel = function() { 
    var self = this; 
    self.name = ko.observable(null).extend({ 
    required: true 
    }); 
    self.validation = ko.validation.group([self.name]); 

    self.go = function() { 
    if(self.name.isValid()){ 
     console.log("I'm valid!"); 
     console.log("Name: " + self.name()); 
    }else{ 
     self.validation.showAllMessages(); 
    } 
    }; 
} 

ko.applyBindings(new viewmodel()); 

Fiddle