2015-01-20 1 views
1

나는 풀 네임 (fullname)에 간단한 검증을하는 간단한 모델 기반 컨트롤러를 가지고있다. 아래에 표시된 것처럼 모델 오류 계산 된 속성에 유효성 검사를 추가했습니다. 폼이 렌더링 될 때 바로이 "계산 된 속성"이 "사용자 이름을 입력하십시오"라는 오류를 표시하는 것을 "해고"한다는 것을 제외하고는 훌륭하게 작동합니다.즉시 (컨트롤러에서) 모델 속성을 바인딩하지 않고 유효성 검사를 실행 하시겠습니까?

질문 나는 그래서 이것은 사용자가 뭔가를 입력하는 대신 대기 좋은 계산 된 부동산/2 방식으로 데이터를 바인딩 재산 및 오류 메시지 만 ... 바로 (발생하지 무언가를 얻기 위해해야 ​​- 어떻게입니다 먼저).

+0

단지와 생각처럼 보일 것이다

enteredUsername: { value: '', isDirty: false } 

될 속성이'dirty' .. – Sisir

답변

2

@Sisir과 마찬가지로, 모델 값이 더러운 지 확인하려면 일종의 변수가 필요할 수 있습니다. 여기에 구현 된 방법이 있습니다. 기본적으로 모델 속성은 valueisDirty 속성으로 구성됩니다. 그래서 enteredUsername 귀하의 수정 된 코드는

var User = Ember.Object.extend({ 
    enteredUsername: { 
    value: '', 
    isDirty: false 
    }, 

    username: function() { 
    var value = this.get("enteredUsername.value").trim(); 

    //Once dirty is set, then dont reset. 
    if(!this.get('enteredUsername.isDirty')) { 
     this.set('enteredUsername.isDirty', value.length > 0); 
    } 

    return value; 
    }.property('enteredUsername.value'), 

    usernameError: function() { 
    var username = this.get("username"); 
    var isDirty = this.get('enteredUsername.isDirty'); 
    if (!username && isDirty) { 
     return "please enter a username"; 
    } 
    }.property('username', 'enteredUsername.isDirty') 
}); 

Here is a working demo.

+0

굉장 경우, 당신은 아마 확인해야합니다! 이것은 (거의) (기본 데이터 맵이 아닌 간단한 아이덴티티 맵을 사용하여) 나의 기본적인 더러운 추적 문제를 해결한다. –

관련 문제