2016-06-06 4 views
1

angular.js를 사용하여 통화 서식을 지정하는 입력을 만들고 있습니다. 여기에 정밀 항상 2로 평가 어디까지Angular.js가 ngModel을 사용하여 입력 필드 값을 설정했습니다.

<div layout-fill> 
    <md-input-container layout-fill currency class="number-range"> 
     <input placeholder="From" 
       type="text" 
       name="from" 
       precision="{{rangeController.precision}}" 
       ng-blur="pls = {{pls | currency}}" 
       ng-model="pls"/> 
    </md-input-container> 
</div> 

있을거야. 나는 이것이 틀렸다는 것을 알고있다. (작동하지 않기 때문이다.) 그러나 이것에 관한 문서에서 아무것도 찾을 수 없다. 그리고 나는 100 가지 다른 국제 통화로 포맷 할 수있는 거대한 JQuery 라이브러리에 대해 구글이 말하고있다. 나는 JQuery도 외부 코드도 사용하지 않기를 원한다. 그리고 이것은 매우 단순 해 보인다. 그래서 아무도 왜 그렇게하려고 시도한 적이 없는지 알 수 없다.

+0

ng-blur = "$ scope.pls = {{pls | currency}}"는 잘못되었습니다. ng-blur = "pls = {{pls | currency}}"또는 ng-blur = "someFunction()"을 $ filter를 사용하여 $ scope.pls에 적용 할 수 있습니다. 명확히하기 위해, 당신은 결코 당신의 HTML에서 "$ scope"를 사용해서는 안됩니다. controllerAsSyntax를 사용하지 않는다면 모든 적용 가능한 변수는 $ scope 객체에서 자동으로 참조/평가됩니다. – matmo

+0

오. 저는'$ scope'을 사용하는 모든 조합을 시도했지만 그렇지 않은 경우, 그것은 현재의 화신이었습니다. 질문의 첫 번째 형식으로 질문을 업데이 트하고, 입력에 대한 감사 덕분에 문제가 여전히 존재하는지 확인할 수 있습니다 – bfieck

답변

0

나는이 plunker이 당신이 요구하는 것을한다고 믿습니다. 이 지시문을 사용합니다 :

.directive('blurToCurrency', function($filter){ 
    return { 
    scope: { 
     amount : '=' 
    }, 
    link: function(scope, el, attrs){ 
     el.val($filter('currency')(scope.amount)); 

     el.bind('focus', function(){ 
     el.val(scope.amount); 
     }); 

     el.bind('input', function(){ 
     scope.amount = el.val(); 
     scope.$apply(); 
     }); 

     el.bind('blur', function(){ 
     el.val($filter('currency')(scope.amount)); 
     }); 
    } 
    } 
+0

이 같은 솔루션의 문제점은 내가 typescript를 사용하고 있다는 것입니다. 인라인 솔루션을 사용하여 이해가 안되는 변환을 망칠 필요가 없습니다. 그래도 고마워! – bfieck

관련 문제