使用 ng-currency 四舍五入大数字的问题
Problems rounding large figures using ng-currency
我正在使用 ng-currency 库 - http://aguirrel.github.io/ng-currency/ - 来显示项目中的货币值。
然而,这并不是我需要的,货币价值
- 不能为负数
- 不能大于 999,999,999
- 必须四舍五入到最接近的整数,即不包含小数
- 呈现为货币值,即 1234 显示为 $1234.00
我在这里 fork 了这个项目 - 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
从你的 plunker 我看到你在混合版本:
来自https://github.com/aguirrel/ng-currency#versions
Versions
If you use angular 1.2.x please, use 0.7.x version. If you use angular
1.3.x or above just use 0.8.x version instead.
请在您的 plunkr 中使用 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
快速自定义过滤器并删除 ngCurrency 库。
</p>
<pre><code><input type="number" maxlength="12" ng-currency ng-model="myValue" />
{{myValue | myCurrency:myValue | currency:'$':0}}
</p>
<pre><code>currencyModule.filter('myCurrency', function () {
return function (myValue) {
if (myValue > 999999){
myValue = 999999;
}
else if(myValue < 0){
myValue = 0;
}
return myValue;
};
});
我正在使用 ng-currency 库 - http://aguirrel.github.io/ng-currency/ - 来显示项目中的货币值。 然而,这并不是我需要的,货币价值
- 不能为负数
- 不能大于 999,999,999
- 必须四舍五入到最接近的整数,即不包含小数
- 呈现为货币值,即 1234 显示为 $1234.00
我在这里 fork 了这个项目 - 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
从你的 plunker 我看到你在混合版本:
来自https://github.com/aguirrel/ng-currency#versions
Versions
If you use angular 1.2.x please, use 0.7.x version. If you use angular 1.3.x or above just use 0.8.x version instead.
请在您的 plunkr 中使用 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
快速自定义过滤器并删除 ngCurrency 库。
</p>
<pre><code><input type="number" maxlength="12" ng-currency ng-model="myValue" />
{{myValue | myCurrency:myValue | currency:'$':0}}
</p>
<pre><code>currencyModule.filter('myCurrency', function () {
return function (myValue) {
if (myValue > 999999){
myValue = 999999;
}
else if(myValue < 0){
myValue = 0;
}
return myValue;
};
});