使用角度过滤器以欧元货币格式化价格

时间:2015-06-24 16:30:17

标签: javascript angularjs

我需要以欧元显示价格,每3位数字没有分数和点数。

因此价格12350,30将变为12.350欧元。

我尝试使用货币过滤器来解决这个问题,但我只能使它与USD一起使用。然后我尝试了以下内容:

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

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

我无法在最后添加€。

有谁知道怎么做?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

Miguel,

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

body {
  font-family: 'Lucida Grande', 'Helvetica Neue', Helvetica, Arial, sans-serif;
  padding: 20px 50px 150px;
  font-size: 13px;
  text-align: center;
  background: #E3CAA1;
}

ul {
  text-align: left;
  display: inline;
  margin: 0;
  padding: 15px 4px 17px 0;
  list-style: none;
  -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.15);
  -moz-box-shadow: 0 0 5px rgba(0, 0, 0, 0.15);
  box-shadow: 0 0 5px rgba(0, 0, 0, 0.15);
}
ul li {
  font: bold 12px/18px sans-serif;
  display: inline-block;
  margin-right: -4px;
  position: relative;
  padding: 15px 20px;
  background: #fff;
  cursor: pointer;
  -webkit-transition: all 0.2s;
  -moz-transition: all 0.2s;
  -ms-transition: all 0.2s;
  -o-transition: all 0.2s;
  transition: all 0.2s;
}
ul li:hover {
  background: #555;
  color: #fff;
}
ul li ul {
  padding: 0;
  position: absolute;
  top: 48px;
  left: 0;
  width: 150px;
  -webkit-box-shadow: none;
  -moz-box-shadow: none;
  box-shadow: none;
  display: none;
  opacity: 0;
  visibility: hidden;
  -webkit-transiton: opacity 0.2s;
  -moz-transition: opacity 0.2s;
  -ms-transition: opacity 0.2s;
  -o-transition: opacity 0.2s;
  -transition: opacity 0.2s;
}
ul li ul li { 
  background: #555; 
  display: block; 
  color: #fff;
  text-shadow: 0 -1px 0 #000;
}
ul li ul li:hover { background: #666; }
ul li:hover ul {
  display: block;
}

然后用作:

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

(由于某种原因,语言pt-PT将空格而不是<span data-ng-bind="property.price | toEuros"></span> 作为千位分隔符)