2013-10-11 3 views
2

각도에는 입력 값을 반올림하는 내장 명령이 있습니까?십진수를 반올림하는 각도 명령

ng-model에서도 실제 val을 반올림하고 싶기 때문에이 경우 숫자 필터가 적합하지 않습니다. 글을 쓰지 않으면 어떻게 될까요?

답변

3

당신은 두 가지 방법으로 바인딩 변환하여 지시를 만들 수 있습니다. 여기에 간단한 예는 다음과 같습니다

app.directive('roundConverter', function() { 
    return { 
    restrict: 'A', 
    require: 'ngModel', 
    link: function(scope, elem, attrs, ngModelCtrl) { 
     function roundNumber(val) { 
     var parsed = parseFloat(val, 10); 
     if(parsed !== parsed) { return null; } // check for NaN 
     var rounded = Math.round(parsed); 
     return rounded; 
     } 
     // Parsers take the view value and convert it to a model value. 
     ngModelCtrl.$parsers.push(roundNumber); 
    } 
}; 
}); 

http://plnkr.co/edit/kz5QWIloxnd89RKtfkuE?p=preview

정말 당신이 그것을 작동하는 방법에 따라 달라집니다. 사용자 입력을 제한해야합니까? 모델과 뷰의 가치가 다를까? 모델에서 유효하지 않은 숫자 입력이 null이어야합니까? 이것들은 모두 당신이 내리는 결정입니다. 위의 지시문은 잘못된 숫자를 null로 변환합니다.

+0

입력란의 값을 업데이트하는 방법이 있습니까? 그것은 ng-model에 바인딩됩니다. 왜 업데이트를 얻지 못합니까? – 9blue

+0

네, 그 기능을 갖춘 업데이트 된 펑크가 있습니다. 처음에 포함시키지 않은 이유는 더 이상 반올림하는 숫자가 아니며 단순히 소수점의 입력을 제한한다는 것입니다. 이 예제를 필요에 맞게 추가 논리를 추가 할 수 있습니다. http://plnkr.co/edit/BZHBJL4RZiStrcSTABZn?p=preview – Adam

+0

@Adam이 (가) 귀하의 코멘트에 링크되어 있으면 작동하지 않으며 번호에 소수점을 넣을 수 있습니다. –

6

당신은 표현에 ngBlurMath.round를 사용할 수 있습니다

<input type="number" ng-model="number" ng-blur="number = Math.round(number)" /> 
+1

JSFiddle please ... –