使用ng-currency舍入大数字的问题

时间:2015-05-21 14:49:50

标签: angularjs rounding currency

我正在使用ng-currency库 - http://aguirrel.github.io/ng-currency/ - 来显示项目中的货币值。 但是,这并不是我所需要的,货币价值

  • 不能否定
  • 不能大于999,999,999
  • 必须四舍五入到最接近的整数,即不包含小数
  • 呈现为货币值,即1234显示为$ 1234.00

我在这里分配了项目 - https://github.com/tetsujin1979/ng-currency/blob/master/src/ng-currency.js 我从正则表达式中删除减号以阻止用户输入负值,并在显示之前编辑on blur方法以舍入数字,如下所示,但是当舍入值大于$ 999,999.00时,模型未获得指定值

element.on("blur", function () {
    var roundedValue = Math.round(ngModel.$modelValue);
    if(roundedValue > 999999999) {
    roundedValue = 999999999;
    }
    ngModel.$setViewValue(roundedValue);
    element.val($filter('currency')(roundedValue, currencySymbol()));
    ngModel.$render();
});

我在这里创建了一个plunkr来证明这一点:http://plnkr.co/Y7WkJtjlDZF3pXo84MRs

2 个答案:

答案 0 :(得分:1)

从你的plunker我看到你正在混合版本:

来自https://github.com/aguirrel/ng-currency#versions

  

版本

     

如果您使用角度1.2.x,请使用0.7.x版本。如果你使用角度   1.3.x或更高版本只需使用0.8.x版本。

请使用https://rawgit.com/aguirrel/ng-currency/v0.8.x/src/ng-currency.js代替上传的ng-currency.js。

  <script src="https://rawgit.com/aguirrel/ng-currency/v0.8.x/src/ng-currency.js"></script>

你可以看到它在使用中(请添加http://因为我的声誉不超过10)plnkr.co/edit/lH9mKrnRZZZAjU27bFqK

答案 1 :(得分:0)

将快速自定义过滤器放在一起并删除了ngCurrency库。

<input type="number" maxlength="12" ng-currency ng-model="myValue" />
{{myValue | myCurrency:myValue | currency:'$':0}}

<input type="number" maxlength="12" ng-currency ng-model="myValue" /> {{myValue | myCurrency:myValue | currency:'$':0}}

currencyModule.filter('myCurrency', function () {
    return function (myValue) {
        if (myValue > 999999){
          myValue = 999999;
        }
        else if(myValue < 0){
          myValue = 0;
        }
        return myValue;
    };
});

http://plnkr.co/edit/1nw9bW3BTkU5YRa2lJFg?p=preview