自定义货币过滤器,以分隔良好的逗号格式显示金额



我是AngularJS的新手,陷入了这个复杂的事情。我必须对 HTML 输入进行过滤,该过滤器将接受数字(没有字母(的货币,逗号应在 3 位数字后自动实现,十进制应该在那里,并且应该在左侧附加美元符号。

我已经尝试了很多,但没有结果,这是必需的。我做了这个JavaScript函数,它做同样的事情,但是我将如何在输入框中输入时在AngularJS中实现它。

function formatPera(num) {
    var p = num.toFixed(2).split(".");
    return p[0].split("").reverse().reduce(function(acc, num, i, orig) {
        return  num + (i && !(i % 3) ? "," : "") + acc;
    }, "") + "." + p[1];
}
var money = 1234;
money = formatPera(money);
console.log(money);

我已经搜索了很多并检查了已经部署的代码。

检查下面的代码。 它在我的最后完美地工作。

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="utf-8" />
</head>
<body>
    <div ng-app="app" ng-controller="ctrl">
        <input type="text" ng-model="price"/> <br/>
        {{price | INR}}
    </div>
    <script src="../lib/angular.js"></script>
    <script>
        var app = angular.module('app', []);
        app.filter('INR', function () {
            return function (input) {
                var length = input.length;
                if(input.length <= 3)
                {
                    return input;
                }
                else {
                    var input = input.split(''); 
                    var output = input[length - 3] + input[length - 2] + input[length - 1];
                    var j = 2;
                    for(i=input.length-3;i--;i>=0)
                    {                        
                        if(j>1)
                        {
                            output = ',' + output;
                            j = 0;
                        }
                        if (i >= 0)
                        {
                            output = input[i] + output;
                            j++;
                        }
                    }
                    return output;
                }
            }
        });
        app.controller('ctrl', function ($scope) {
            $scope.price = '4665987565';
        });
    </script>
</body>
</html>

最新更新