【问题标题】:Format price in euros currency using Angular Filter使用 Angular 过滤器格式化欧元货币价格
【发布时间】:2015-06-24 16:30:16
【问题描述】:

我需要以欧元显示价格,不带小数,每 3 位数显示一个点。

所以价格 12350,30 将变为 12.350 €。

我尝试使用货币过滤器解决此问题,但我只能使用美元。然后我尝试了以下方法:

<span data-ng-bind="property.price | number:0"></span>

但我每 3 个数字得到一个逗号,而不是一个点。

而且我无法在末尾添加 € 符号。

有人知道怎么做吗?

【问题讨论】:

  • @Miguel 我想知道千位分隔符(点而不是逗号)是否是语言环境问题,例如由用户偏好设置,无论哪种方式,您都可以在网络上找到一些关于如何制作自定义过滤器来处理此问题的博客文章
  • 如前所述,这取决于您的语言环境设置,只需更改它即可获得正确的分隔符

标签: javascript angularjs


【解决方案1】:

而且我无法在末尾添加 € 符号。

您可以指定货币符号

{{ currency_expression | currency : symbol : fractionSize}}

所以

<span data-ng-bind="property.price | currency:"€":2></span>

但我每 3 个数字得到一个逗号,而不是一个点。

十进制和组分隔符取决于语言环境,这里是来自 AngularJS 源代码的相关部分

  "NUMBER_FORMATS": {
    "CURRENCY_SYM": "\u20ac",
    "DECIMAL_SEP": ",",
    "GROUP_SEP": "\u00a0",

Source 是 AngularJS 的法语 (fr-fr) 语言环境,https://github.com/angular/angular.js/blob/master/src/ngLocale/angular-locale_fr-fr.js#L78

【讨论】:

    【解决方案2】:

    米格尔,

    您可以创建自定义过滤器:

    app.filter('toEuros', function() {
      return function(input) {
        return Number(input).toLocaleString("es-ES", {minimumFractionDigits: 0}) + ' €';
      };
    });
    

    然后用作:

    <span data-ng-bind="property.price | toEuros"></span>
    

    (出于某种原因,语言 pt-PT 将空格而不是 . 作为千位分隔符)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-18
      • 1970-01-01
      • 1970-01-01
      • 2013-10-18
      • 2011-09-16
      相关资源
      最近更新 更多