2017-09-01 173 views
4

歐元我使用AngularJS貨幣過濾器時遇到顯示歐元正確簽名的問題。AngularJS貨幣過濾器 -

的HTML:

{{ price.priceTotal | currency: myController.getPriceCurrency() }} 

控制器:

getPriceCurrency() { 
    return `€ `; 
} 

- 在上面的方法,我剛回國的歐元符號的代碼,但通過這個返回的貨幣方法可以是任何,取決於所選貨幣。

我的問題是,貨幣符號不正確顯示。它顯示爲€ 50例如,但我希望它顯示爲€ 50.我試圖設置在getPriceCurrency方法直接在歐元符號€返回,然而這將最終被顯示爲??? (三個問號),一旦代碼被部署。

是否有任何其他的解決方法,我可以做的就是歐元和其他貨幣符號正常顯示?

感謝

+0

的可能的複製[如何獲得特定的貨幣符號的角度JS,而不是默認的(在我的情況盧比符號)(美元$符號)(https://stackoverflow.com/questions/18612212/how-to -get-specific-currency-symbolrupee-symbol-in-case-in-angular-js-inste) – Vivz

+0

@Vivz我的問題不是如何顯示貨幣符號。我知道我可以使用角度js過濾器。我的問題是貨幣符號顯示不正確,這是不同的。 – user1809790

+0

檢查下面的答案,看看它是否是你在找什麼 – Vivz

回答

0

Try this(請參閱有關更多信息的官方文檔):

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
</head> 
 
<body ng-app="currencyExample"> 
 
    <script> 
 
    angular.module('currencyExample', []) 
 
    .controller('ExampleController', ['$scope', function($scope) { 
 
     $scope.amount = 1234.56; 
 
    }]); 
 
</script> 
 
<div ng-controller="ExampleController"> 
 
    <input type="number" ng-model="amount" aria-label="amount"> <br> 
 
    default currency symbol ($): <span id="currency-default">{{amount | currency}}</span><br> 
 
    custom currency identifier (USD$): <span id="currency-custom">{{amount | currency:"USD$"}}</span><br> 
 
    no fractions (0): <span id="currency-no-fractions">{{amount | currency:"&euro;":0}}</span> 
 
</div> 
 
</body> 
 
</html>

+1

當我設置的貨幣:「&歐元」在工作正常的HTML。但這不是我所需要的。我需要從控制器獲取貨幣,因爲它是動態的。事情是,當我從控制器返回例如&歐元時,它就像那樣顯示,而不是合適的歐元符號。 – user1809790

0

使用此

{{ price.priceTotal | currency: myController.getPriceCurrency() | currency:"&euro;"}} 
    or 
{{ price.priceTotal | currency: myController.getPriceCurrency() | currency : "€"}} 

在控制器只返回值

getPriceCurrency() { 
     return `8364; `; 
    } 
+0

當我添加兩個貨幣過濾器我什麼都沒得到,甚至沒有價格。 – user1809790

2

您可以使用ngSanitize模塊的$sce來執行此操作。這是爲了確保html可以被信任並且防止任何易受攻擊的XSS攻擊。 Angular不會將字符串&#8364;直接轉換爲歐元符號。

var app = angular.module("app", ["ngSanitize"]); 
 
app.controller("myCtrl", function($scope, $filter,$sce) { 
 
    var vm =this; 
 
    vm.price=100; 
 
    vm.getPriceCurrency=function() { 
 
    return `&#8364; `; // return any currency 
 
} 
 
}); 
 
app.filter('unsafe', function($sce) { 
 
    return $sce.trustAsHtml; 
 
});
<!DOCTYPE html> 
 
<html ng-app="app"> 
 
<head> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.5/angular.min.js"></script> 
 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular-sanitize/1.6.5/angular-sanitize.js"></script> 
 
</head> 
 
<body ng-controller="myCtrl as myController"> 
 
<!-- binding the currency to html --> 
 
    <div ng-bind-html="myController.price | currency: myController.getPriceCurrency()| unsafe"> 
 
    </div> 
 
</body> 
 
</html>

0

我設法通過NG綁定,HTML來解決它:

ng-bind-html="myController.price | currency: myController.getPriceCurrency()" 

這對待我的貨幣作爲HTML並正確顯示它。