我正在尝试更改ngModel(input type="number"
)格式。如您所见,此代码在angularjs 1.2.23版本中运行良好,但在1.6.4版本中不起作用。还有其他解决方案吗?
Output must be: 25,00
var app= angular.module('myApp',[]);
app.controller('myCtrl',function($scope){
$scope.test=25;
})
.directive('price', function($filter) {
return {
restrict: 'A',
require: '?ngModel',
link: function(scope, element, attrs, ngModel) {
ngModel.$formatters.push(function (value) {
return $filter('number')(value,2);
});
}
}
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl">
<input type="number" ng-model="test" price>
</div>
类型
为 number
的Input
需要Number
而不是String
。
在您的示例中,返回值将是一个String
:
ngModel.$formatters.push(function (value) {
return $filter('number')(value,2);
});
使用 parseFloat()
.parseFloat()
函数分析参数并返回浮点数。在我的方法中,我使用了step
属性来递增0.01
的值。
JSFiddle:
var app= angular.module('myApp',[]);
app.controller('myCtrl',function($scope){
$scope.test=25;
})
.directive('price', function($filter) {
return {
restrict: 'A',
require: '?ngModel',
link: function(scope, element, attrs, ngModel) {
ngModel.$formatters.push(function (value) {
return parseFloat(value);
});
}
}
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl">
<input type="number" step=".01" price ng-model="test">
</div>