2016-07-14 5 views
0

지시어에 해당 값을 변경하면 뷰 값이 클래스를 그의 값에 따라 input:text에 추가합니다.

restrict: 'A', 
require : 'ngModel', 
link : function(scope, element, attrs, modelCtrl) { 
    function apply(input) { 
    // Simplified .. 
    if (input!=='Ooops' && isNaN(parseFloat(input)) { 
     modelCtrl.$setViewValue('Ooops'); 
     element.addClass('is-nan'); 
     return undefined; 
    } 
    } 

    modelCtrl.$parsers.push(apply); 
} 

값을 편집하면 올바르게 작동합니다. 그러나 클래스와 뷰 값이 설정되도록 요소가 각도로 바인딩되어있을 때 같은 논리를 적용하고 싶습니다.

기본적으로 지시문이 연결된 경우 apply으로 전화를 걸고 싶습니다. 그래서 link 함수 끝에 apply(element.val())을 추가하려고 시도했지만 element.val()은 항상 비어 있습니다.

이 방법을 호출하기 위해 다른 라이프 사이클 후크를 사용해야하지만 찾지는 못한다고 생각합니다. 가능한 해결책은 link 대신 compile을 사용할 수 있지만 DOM 변환을 수행하지 않으므로이 작업을 수행하지 않아도됩니다.

나는 modelCtrl.$observe('ngModel', ..)을 시도했지만 다시 입력 값이 비어 있습니다.

지시문이 링크되었을 때 어떻게 뷰 논리를 적용 할 수 있습니까?

감사합니다.

답변

0

$ observe를 사용하면 문제가 없습니다.

attrs.$observe('ngModel', function(value){ 
    apply(modelCtrl.$modelValue); 
}); 

는 (내 apply 기능은 잘못 모든 값을 '정의되지 않은'반환.)