我有10个文本框,如果用户输入10.3691则应该更改为10.37
<input ng-model='data.value1' ng-blur="formatDecimals1()">
<input ng-model='data.value2' ng-blur="formatDecimals2()">
......
在控制器中,
$scope.formatDecimals1 = function() {
$scope.data.value1= Number($scope.data.value1).toFixed($scope.data.value1Points);
}
$scope.formatDecimals2 = function() {
$scope.data.value2= Number($scope.data.value2).toFixed($scope.data.value2Points);
}
我觉得这不是一个正确的方法......任何其他解决方案来实现这一目标。或者,我们如何使用单一的通用函数来格式化所有文本框输入。
答案 0 :(得分:3)
您可以编写自定义指令,例如:
angular.module('app', []).
directive('toPrecision', function(){
return {
replace: false,
restrict: 'A',
link: function(scope, element) {
var e = angular.element(element);
e.on('keyup', function(){
var n = parseFloat(e.val());
if (parseInt(n, 10) !== n && String(n).split('.')[1].length > 2) {
e.val(n.toFixed(2));
}
});
}
}
});
然后在标记中:
<div ng-app="app">
<input type="number" to-precision="2" />
</div>
您可以在此处尝试工作代码:http://jsfiddle.net/ctgxd4va/
PS。我在2分钟内写完了它,它远非完美......但它应该给你一个想法;)