Ren
Ren

Reputation: 531

Is it possible to inject a $filter inside a filter definition in angularjs?

When I try to call an existing filter (like the currency filter) inside my currency_br filter, i get an injection error. How could I inject $filter inside my custom filter definition? Thanks in advance.

angular.module('ng').filter('currency_br', 

function () {

    return function (n) {

        var us_currency = $filter('currency')(n);
        return us_currency.toString().replace('.','@').replace(',','.').replace('@',',');

    };


});

Upvotes: 1

Views: 1803

Answers (2)

javaCity
javaCity

Reputation: 4318

You can try something like this:

app.filter('reverse', function(){
    return function (input) {
        return input.split('').reverse().join('');
    }
});

app.filter('upperCaseReverse', function($filter){
    return function(input){
        return $filter('reverse')(input).toUpperCase(); // Get previously defined filter
    }
});

Here's a basic plnk.

Upvotes: 2

Joe
Joe

Reputation: 2596

Yes, this is possible...just inject $filter like you would in a controller or anything else.

angular.module('ng').filter('currency_br', function ($filter) {
    return function (n) {
        var us_currency = $filter('currency')(n);
        return us_currency.toString().replace('.','@').replace(',','.').replace('@',',');
    };
});

Fiddle.

Upvotes: 5

Related Questions