带 angular 过滤器的条件货币符号

conditional currency sign with angular filter

$scope.countries = [{name: 'UNITED KINGDOM', id: 1, sign:"£", 'val':2300987 },{name:    'AUSTRIA', id: 2, sign:"€", 'val':6703482 }
// In HTML
   <tr ng-repeat="country in countries">
        <td class="td-border">{{country.val| currency}}</td>
   </tr>

我需要 angular 过滤器,它将根据上述对象有条件地处理货币..

来自 Angular 文档

Filter definition {{ currency_expression | currency : symbol : fractionSize}}

简单地说,您可以将参数添加到过滤器中,这将是您的货币符号。

标记

<tr ng-repeat="country in countries">
    <td class="td-border">{{country.val| currency: country.sign}}</td>
</tr>

我认为您需要根据货币过滤行。您只需将代码更新为以下

即可实现
// In HTML
<tr ng-repeat="country in countries | filter : {sign : currency}">
    <td class="td-border">{{country.val}}</td>
</tr>

首先,如果您希望过滤器格式化您的货币,您必须将国家对象或符号和 val 传递给它,否则您无法使用过滤器添加符号。

   .filter('currency', [function() {
    return function(countryObj) {    
            return countryObj.val + countryObj.sign;
        }
    };
    }])

angular的过滤可以绑定在转发器上。 使用单独的模型来存储当前货币非常容易:

$scope.currency = "£";

那么在转发器上过滤就很容易了:

<tr ng-repeat="country in countries  | filter : { sign : currency || ''}">
                <td class="td-border">{{country.val}}</td>
            </tr>

工作演示:http://jsfiddle.net/CBgcP/692/