输入字段在控制器端的保存方式不同 (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 的内置 parseFloattoFixed 方法即可:

var plainNumber = parseFloat(viewValue.replace(/[^\d|\-+]/g, '')).toFixed(2);

此外,

return plainNumber/100.00