输入字段在控制器端的保存方式不同 (angularjs)
Input field saves differently at controller side (angularjs)
这里是plunker。
当用户输入时,逗号会即时添加。这就是使用指令的目的。它还显示 2 位小数。
我的问题是-
例如如果我在输入字段中输入“2300.34”并单击 'Submit',它将在控制器端给我一个字符串 230034。我已经使用 console.log 检查我在控制器端获得的数据。我希望数据与控制器中的一样。我怎样才能做到这一点?
JS 和指令
var app = angular.module('App',[]);
app.controller('MainCtrl', function ($scope) {
$scope.getdata = function(){
console.log($scope.amount);
}
});
app.directive('format', ['$filter', function ($filter) {
return {
require: 'ngModel',
link: function (scope, elem, attrs, ctrl) {
if (!ctrl) return;
ctrl.$formatters.unshift(function (a) {
return $filter(attrs.format)(ctrl.$modelValue);
});
ctrl.$parsers.unshift(function (viewValue) {
var plainNumber = viewValue.replace(/[^\d|\-+]/g, '');
elem.val($filter('number')(plainNumber/100,2));
return plainNumber;
});
}
};
}]);
HTML部分
<body ng-app="App">
<div ng-controller="MainCtrl">
<input type="text" ng-model="amount" format="number" />
<input type="submit" ng-click="getdata()" />
</div>
只需在 $parsers.unshift
函数中使用 JavaScript 的内置 parseFloat
和 toFixed
方法即可:
var plainNumber = parseFloat(viewValue.replace(/[^\d|\-+]/g, '')).toFixed(2);
此外,
return plainNumber/100.00
这里是plunker。 当用户输入时,逗号会即时添加。这就是使用指令的目的。它还显示 2 位小数。
我的问题是- 例如如果我在输入字段中输入“2300.34”并单击 'Submit',它将在控制器端给我一个字符串 230034。我已经使用 console.log 检查我在控制器端获得的数据。我希望数据与控制器中的一样。我怎样才能做到这一点?
JS 和指令
var app = angular.module('App',[]);
app.controller('MainCtrl', function ($scope) {
$scope.getdata = function(){
console.log($scope.amount);
}
});
app.directive('format', ['$filter', function ($filter) {
return {
require: 'ngModel',
link: function (scope, elem, attrs, ctrl) {
if (!ctrl) return;
ctrl.$formatters.unshift(function (a) {
return $filter(attrs.format)(ctrl.$modelValue);
});
ctrl.$parsers.unshift(function (viewValue) {
var plainNumber = viewValue.replace(/[^\d|\-+]/g, '');
elem.val($filter('number')(plainNumber/100,2));
return plainNumber;
});
}
};
}]);
HTML部分
<body ng-app="App">
<div ng-controller="MainCtrl">
<input type="text" ng-model="amount" format="number" />
<input type="submit" ng-click="getdata()" />
</div>
只需在 $parsers.unshift
函数中使用 JavaScript 的内置 parseFloat
和 toFixed
方法即可:
var plainNumber = parseFloat(viewValue.replace(/[^\d|\-+]/g, '')).toFixed(2);
此外,
return plainNumber/100.00