2016-11-23 5 views
0

ember-cli : 2.5.0 및 ember-validation : v2.0.0-alpha5 내 ember 구성 요소에 대해 자동으로 실행되는 유효성 검사가 있습니다. 각 속성 변경 있지만 기술 용어 호출 유효성 검사 lazily "validate()"메서드를 호출하는 경우에만이 유효성 검사를 실행하려면.Ember-validation 지연 검증을 구현하는 방법

찾아주세요 아래 코드 샘플,

import Ember from 'ember'; 
import EmberValidations, { validator } from 'ember-validations'; 

export default Ember.Component.extend(EmberValidations, { 

didReceiveAttrs() { 
    this.set('newBook', this._bookModel().create()); 
}, 

_bookModel(data = {}) { 
return Ember.Object.extend(EmberValidations, { 
    bookVersion: null, 
    isEditable: false, 
    validationActive: false, 
    validations: { 
    bookVersion: { 
     inline: validator(function() { 
if(this.validationActive){ //Here this.validationActive always return undefined 
     var version = this.model.get('bookVersion') || "", 
      message = []; 

     if (Ember.isEmpty(bookVersion)) { 
      message.push("Book Version is mandatory!!!"); 
     } 

     if (message.length > 0) { 
      return message.join(','); 
     } 
     } 
     }) 
    } 
    } 
}, data); 
} 

}); 

actions: { 
     this.get('newBook').set("validationActive",true); 
     this.get('newBook').validate().then(() => { 
      //Do the action 
     } 
} 

나는 위의 검증 호출 만 실행하려면 "썩 ('newBook를'). 검증()". 전 완전히 새로운 사람들입니다. 유권자들은 다른 사람들을 위해 투표하기 전에 의견을 말하십시오. 더 많은 코드 샘플을 알려주십시오.

도움이 필요합니다.

답변

1

유효성 검사 ("ember-validations")에 사용하는 addon은 매우 인기가 있으며 다른 문서와 비교할 때 문서가 잘 읽혀집니다. 문서를 보면 documentation에 "조건부 검사기"라는 부분이 있습니다. boolean 속성을 사용하여 유효성 검사를 수행 할시기를 제어 할 수 있습니다.

다음과 같은 의미의 그림을 볼 수 있습니다. twiddle. 응용 프로그램 컨트롤러에서 사용자 이름에 대한 간단한 유효성 검사를 만들었습니다. 이름 필드는 길이가 5 이상이어야하며 유효성 검사는 validationActive이 참일 때만 수행되어야합니다. 처음에는; 조건은 거짓입니다. 이는 유효성 검사기가 작동하지 않고 컨트롤러의 isValid 속성 (EmberValidations Mixin에서 상속 됨)이 true임을 나타냅니다. 제공된 단추로 속성을 토글하면; 유효성 검사가 실행되고 (조건이 이제 true로 설정되므로 유효성 검사가 트리거 됨) isValid이 false로 돌아갑니다. 값을 변경하면; 사용자 이름의 값에 따라 유효성 검사 결과가 적절하게 변경됩니다. 조건을 다시 한 번 틀어서 false로 설정하면; isValid은 사용자 이름의 가치가 무엇이든 상관없이 사실이됩니다.

유효성 검사가 작동해야하는 시점을 제어하는 ​​방법에 대한 통찰력이 있기를 바랍니다.

다음은 편집 후에 수행해야하는 작업입니다. 인라인 유효성 검사기 내에서 구성 요소 자신의 validationActive 필드에 도달하려고하기 때문에 필드가 정의되지 않았습니다. validationActive을 다음과 같이 입력하십시오. this.model.get('validationActive') 시도해보십시오. 그것은 작동해야합니다.

+0

인라인 유효성 검사기를 사용하여 잘못된 답변을 사용하고 있기 때문에 답변을 내 질문과 연관시킬 수 없습니다. 조건부 인라인 검사기에 대한 문서를 찾지 못했습니다. 대신 조건부 유효성 검사를 찾을 수 있습니다. 귀하의 대답을 기반으로 내 질문을 업데이 트했지만 항상 "조건"에서 "정의되지 않은"지고있다. 나를 정정하고이 시나리오에서 나를 도우십시오. – VelNaga

+0

편집과 관련하여 업데이트 한 부분을 참조하십시오. – alptugd

+0

@alptugx 귀하의 도움에 많은 도움을 주신 덕분입니다. 그 검증 오류를 해결하는 방법을 알고 계시나요? – VelNaga