当用作输入[type = number]的值时,是否有办法防止浮点值被舍入。我不能根据要求使用任何其他类型。
例如,我无法使用值“3.00”绑定输入[type = number],它会自动舍入为“3”。
我正在尝试使用angularjs绑定值。
angular.module('app', [])
.controller('controller1', ['$scope', function ($scope){
$scope.value=3.00;
}]);
<div ng-app="app" ng-controller="controller1">
<input type="number" ng-model="value" /><br/>
{{value}}<br/>
</div>
这是PEN的链接:http://codepen.io/cyrilpanicker/pen/aqucJ?editors=101
答案 0 :(得分:1)
这是因为ngModel在解析后对值进行舍入。一种解决方法可能是使用优先级较低(-1
)而不是ngModel
(优先级0
运行)的自定义指令来处理它,以便在ngModel解析后运行。并在指令寄存器中使用数字过滤器来重新格式化输入的模型值。
var app = angular.module('app', []);
app.controller('MainCtrl', function($scope) {
$scope.value=3.00;
}).directive('formatNum', function(numberFilter){
return {
priority:-1, //<-- Important
require:'ngModel',
link:function(scope, elm, attrs, ngModel){
ngModel.$formatters.push(format); //Push a formatter
function format(){
return numberFilter(ngModel.$modelValue , 2); //Round off to 2 dec
}
}
}
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app" ng-controller= "MainCtrl">
<input type="number" ng-model="value" format-num/><br/>
{{value | number:2}}<br/>
</div>
&#13;
答案 1 :(得分:0)
您可以使用number过滤器在显示时格式化数字。 {{值|数字:2}}将始终显示2dp:
<div ng-app="app" ng-controller="controller1">
<input type="number" ng-model="value" /><br/>
{{value | number:2}}<br/>
</div>