5

我希望在我的网站内的特定表格中显示价格至小数点后3位。AngularJS:货币格式。更改分数大小,千分位分隔符和分数分隔符

价格将以磅,美元和欧元显示。

我的货币过滤器似乎自动将价格四舍五入到小数点后两位。

此外,如果货币是欧元,理想情况下,我想自动将千位分隔符更改为.并将小数点分隔符更改为,

angularjs是否支持这个?

<div ng-controller="SpotController"> 
    <table class="header-table-spot-prices"> 
     <thead> 
      <tr><th>Spot Prices</th><th>Price</th></tr> 
     </thead> 
     <tbody> 
      <tr ng-repeat="spot in spots"> 
       <td>{{ spot.item }}</td> 

        <!-- This needs to be 3dp --> 
       <td>{{ spot.price | currency:spot.currency }}</td> 
      </tr> 
     </tbody> 
    </table> 
</div> 

回答

0

这是在这一点上可能无关紧要,因为原帖是2年前的,但角度的“货币”过滤器发生在一个符号和一个分数的大小作为参数。

例如:

<td>{{ spot.price | currency:spot.currency : 3 }}</td> 

会输出你所不改变基础货币分隔符的告诫寻找。您可以创建自己的货币过滤器,首先使用角度过滤器,然后检查条件并更改分隔符。这plunker说明。

.filter('myCurrency', ['$filter', function($filter){ 
     return function(input, symbol, fractionSize){ 
      input = $filter('currency')(input, symbol, fractionSize); 
      if(symbol === '\u20AC'){ 
      var tempString = "###"; 
      input = input.replace(",", tempString).replace(".", ",").replace(tempString, "."); 
      } 
      return input; 
     } 
    }]) 

您可能已经解决了这个满足您的需求,而是把答案在这里,以防万一别人运行到类似的问题和遇到这个职位。

+0

这里介绍的解决方案不足之处在于它只用'“。”'替换第一个'','''。因此它对于超过1000000的数字将无法正确工作。更好的解决方案是:'input = input.split(“,”)。join(tempString).replace(“。”,“,”)。split(tempString)。加入( “”);' – nplatis