Javascript 角Js货币,符号欧元后

Javascript 角Js货币,符号欧元后,javascript,angularjs,currency,Javascript,Angularjs,Currency,如何将欧元符号从值的前面移到后面 例如: {{product.price | currency:€“}}将产生12.00欧元 但是我希望12.00€您不能使用货币过滤器。您可以自己编写,也可以使用数字过滤器 {(product.price | number:2)+“€”}使用此技巧 <div>{{product.price | currency : '' }} €</div> {{product.price}货币:'}} 提议的解决方案都是肮脏的 首先,过滤器通过将其添

如何将欧元符号从值的前面移到后面

例如:

{{product.price | currency:€“}}
将产生
12.00欧元


但是我希望
12.00€
您不能使用货币过滤器。您可以自己编写,也可以使用数字过滤器

{(product.price | number:2)+“€”}

使用此技巧

<div>{{product.price | currency : '' }} €</div>
{{product.price}货币:'}}

提议的解决方案都是肮脏的

首先,过滤器通过将其添加为参数来允许更改符号:

{{product.price | currency : "€"}}
但正确的方法是按照@Andreas的建议本地化你的应用程序 如果在应用程序中使用意大利语言环境设置(it)对应用程序进行本地化,则只需调用筛选器即可获得欧元符号

{{product.price | currency }}
意大利地区设置将欧元符号置于货币值之前。 您可以更改che locale值,或者更好地按照以下链接答案中的建议覆盖它们:

您可以覆盖区域设置,将货币符号(\u00A4)作为正值和负值的前缀或后缀

app.config(['$provide', function($provide) {
    $provide.decorator('$locale', ['$delegate', function($delegate) {
      if($delegate.id == 'it-it') {
            $delegate.NUMBER_FORMATS.PATTERNS[1].negPre = '\u00A4\u00a0-';
            $delegate.NUMBER_FORMATS.PATTERNS[1].negSuf = '';
            $delegate.NUMBER_FORMATS.PATTERNS[1].posPre = '\u00A4\u00a0';
            $delegate.NUMBER_FORMATS.PATTERNS[1].posSuf = '';
      }
      return $delegate;
    }]);
  }]);
因此,在该指令之后,过滤器:

{{product.price | currency}} 
将生成以下输出

€ 12

我在法国的项目(生产中)中使用此解决方案(它必须始终显示5.00欧元,从不显示5.00欧元):

Price:{{product.Price |币种:}}}


请在投票太快之前阅读这篇文章的真正问题(货币,后面是欧元符号)

这是一个很老的问题,现在不同了。。也许那时也是

所以如果其他人发现了这个

但您需要包含正确的区域设置,才能在货币筛选器中获得正确的货币格式


检查角度文档,例如荷兰语货币格式为5,00欧元,英语为5,00欧元,美语为5.00欧元。您不必破解货币过滤器

AngularJS非常支持i18n/l10n。货币筛选器使用区域设置服务中的默认货币符号,并根据区域设置对其进行定位

因此,这一切都是关于支持和设置正确的区域设置

<script src="i18n/angular-locale_de-de.js"></script>
现在将生成以下输出:

65,95 €
支持多个本地化

如果要支持多个本地化,请小心使用货币符号,因为它将更改为所用语言环境的默认货币。但是
65,95欧元
不同于
65,95美元
。提供货币符号作为安全参数:

<span>{{ product.price | currency:'€' }}</span>
{{product.price}货币:'€'}
de
中,输出仍然是
65,95欧元
,但如果位置是例如
en-us
,则输出将是
65.95欧元
(尽管有其他说法)


要了解有关angular和i18n/l10n的更多信息,请参阅。

您可以创建一个过滤器:

app.filter('euroFormat', function () {
    return function (input) {
        return input+' \u20AC';
    };
});
并将其应用到html代码中,方法是:

<span>Price: {{product.price| euroFormat}}</span>
Price:{{product.Price | euroFormat}

使用
语言环境
(如本线程中的答案所述- at)似乎是最正确的方法,但它似乎没有提供将货币符号或名称相对于所引用的值放置在所需位置的灵活性。如果您需要将货币符号放在您的值之后,您可以使用一个单独的
product.currency
字段,并在价格值之后(或之前)插入该字段

因此,如果您有
product.price=40
product.currency='€'
,您可以使用
{product.price}}{{product.currency}
将其显示为40欧元。或者通过颠倒字段:
{{product.currency}{{product.price}}
来获得40欧元

如果这样做(),您可能希望通过十进制管道格式化
product.price
值因此,“40.00欧元”将是:
{{product.amount}编号:'2.2-2'}{{product.currency}


仅供参考-在这种情况下,我可能会有一个单独的字段
product.currency
product.currencySymbol
(例如分别为“USD”和“$”),但随后您将更多地了解
区域设置的功能,如上面我链接的另一个答案所述。但是,如果您需要将货币名称或符号放置在与值相关的不同位置,而不是Angular通过其本机管道允许您执行的操作,并且希望使用特定于您正在使用的记录或集合的货币,而无需在页面上硬编码其符号或名称(例如,如果您正在显示多个货币),这是一种动态执行的方法。

Angularjs对国际化和本地化有很大的支持。 国际化和本地化的应用取决于您的应用范围。 例如,如果您的应用程序只支持欧元,那么您只需要欧元的本地化,而不需要所有货币及其格式

在这种情况下(假设您的情况与上面类似),您可以创建一个应用程序配置,并使用一些装饰器将locale设置为所需的本地化。decorator函数拦截服务的创建,允许它重写或修改服务的行为

angular
.module('应用程序',[])
.config(['$provide',函数($provide){
$provide.decorator(“$locale”、[“$delegate”、函数($delegate){
$delegate.NUMBER\u格式={
十进位_SEP:',
组(SEP):",",,
模式:[{///十进制模式
minInt:1,
minFrac:0,
maxFrac:3,
posPre:“,
可能是:,
negPre:“-”,
negSuf:“,
gSize:3,
尺寸:3
},{//货币模式
minInt:1,
minFrac:0,
maxFrac:1,
posPre:“\u00A4”,
可能是:,
negPre:'(\u00A4
app.filter('euroFormat', function () {
    return function (input) {
        return input+' \u20AC';
    };
});
<span>Price: {{product.price| euroFormat}}</span>