我有一个表单和一些输入类型编号。
我需要动态地将用户输入值向上舍入为某个可配置的精度(来自服务器,存在于ngmodel中,如ct.precision)。我的输入值可能是'',具体取决于初始值。
我正在尝试使用过滤器编号,但我不确定这是否应该如何使用它。 我曾尝试使用onChange,但我无法使用可配置值设置精度。
实现这一目标的最佳方法是什么?
<input
id="quantityValue-{{ $index }}"
class="my-quantity"
ng-model="$ct.record[$index].newQuantity"
type="number"
required
min="0"
pattern="\d+(\.\d+)?"
maxlength="15"
>
这就是我输入的样子。
答案 0 :(得分:0)
尝试在输入字段和可配置的精度选择上使用ng-change
(可能是的任何内容,我选择了<select>
)。这是一个没有验证的演示:
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $filter) {
$scope.foo = function(x, n = 3) {
$scope.x_ = Number($filter('number')(x, n));
}
$scope.precision = [0, 1, 2, 3, 4, 5];
$scope.n = $scope.precision[0]; // default (optional)
$scope.x = 0; // default (to remove NaN issues)
$scope.foo($scope.x, $scope.n); // initialise precision
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl">
<select ng-model="n" ng-change="foo(x,n)" ng-options="p for p in precision">
</select>
<hr>
<input type="number" ng-model="x" ng-change="foo(x,n)">
<br>{{x_}}
</div>
(舍入可能存在一些问题(责怪JavaScript ),其中舍入0.129999
为{2}提供0.13
之间的精度)