2014-11-13 1 views
1

금액 및 통화 쌍의 배열이 있습니다. 후자는 'USD'또는 'EUR'뿐만 아니라 해당 통화의 서식 지정 규칙이 포함 된 개체입니다. 나는 양을 포맷에 대한 필터를 작성했습니다,하지만 난 하드 포맷 인자를 코딩하는 경우에만 작동합니다 내가 할 수 있도록하고 싶습니다 무엇범위가 아닌 변수를 AngularJS 필터로 전달하는 방법은 무엇입니까?

// arguments: currency symbol, is symbol prefix, decimal symbol, digit group symbol 
{{ entry.amount | currency24: '$',true,'.',',' } //USD example 
{{ entry.amount | currency24: '€',false,'.',',' } //EUR example 

지금처럼 거기에 전체 개체를 넣어 :

{{entry.amount | currency24: entry.currency }} // currency object holds all the formatting parameters, but I could just as well pass them one by one 

어떻게하면됩니까?

편집 : entry은 $ scope에 속하지 않습니다. ng-repeat에서 왔습니다.

ng-repeat="entry in entries" 

그래서 필터에 전달하는 데 문제가 있습니다.

+1

currency24 필터 구현을 표시 할 수 있습니까? –

답변

1

언급 한 것처럼 개체를 필터링하여 전달할 수 있습니다.

<p ng-repeat="entry in entries"> 
    {{entry.amount | currency24: entry.currency }} 
</p> 

을 그리고 다음 코드는 당신이 무엇을 요구하지 :

HTML 마크 업 당신이 원하는 동일하게 유지

.controller('DemoController', function($scope) { 
    $scope.entries = [{ 
     amount: 35, 
     currency: { 
     symbol: '$' 
     } 
    }, { 
     amount: 40, 
     currency: { 
     symbol: '€' 
     } 
    }]; 
}) 

.filter('currency24', function() { 
    return function(amount, currencyObject) { 
    return amount + currencyObject.symbol; 
    }; 
}); 

그리고이 plunker을 확인하십시오.

+0

엔트리가'$ scope'에 있지 않다는 것을 잊어 버렸습니다. 오히려 그것은 엔트리 "에서 ng-repeat :'ng-repeat ="엔트리에서 왔습니다. 'entries'는'$ scope'에 있습니다. 나는 이것을 반영하기 위해 나의 질문을 편집했다. – gligoran

+0

그게 문제가 아니어야 할 것 같아. 나는 대답과 멍청이를 업데이 트했습니다. 나는 당신의 질문을 오해 했습니까? – halilb

+1

네 말이 맞아. 내 문제는 entry.currency 객체가 실제로 정의되지 않은 원인이 된 응용 프로그램의 다른 부분에있는 것으로 나타났습니다. 도와 주셔서 정말로 고맙습니다. – gligoran

관련 문제