2015-05-22 11 views
5

chcę użyć wielu filtrów w regulatorzeangularjs - Wiele filtrów Wykorzystanie kontrolera

Obecnie używając

$filter('limitTo')($filter('lowercase')($filter('translate')('ACTIVE')), 5) 

Jeśli mamy więcej filtrów, takich jak ten. Jak mogę używać wielu filtrów w kontrolerze, a nie w konwencjonalnym formacie?

+0

Jakie jest dokładnie twoje pytanie? Pytanie ma odpowiedź: już używasz wielu filtrów w kontrolerze. –

+1

Używam wielu filtrów @JB Nizet. Uproszony format, którego chcę, niż to. –

+0

podobny do: http://stackoverflow.com/questions/27852445/how-to-chain-angularjs-filters-in-controller – khakiout

Odpowiedz

2

można po prostu wprowadzić zmienne:

var limitTo = $filter('limitTo'); 
var lowercase = $filter('lowercase'); 
var translate = $filter('translate'); 

var filteredValue = limitTo(lowercase(translate('ACTIVE')), 5); 

Albo nawet

var lowercaseStatus = lowercase(translate('ACTIVE')); 
var filteredValue = limitTo(lowercaseStatus, 5); 

Inną strategią byłoby wykorzystanie tej samej składni jak w widoku:

var filteredValue = $scope.$eval('"ACTIVE" | translate | lowercase | limitTo:5'); 
1

Jest to interesujące pytanie. Zazwyczaj zrobiłbyś coś takiego albo coś takiego:

var translatedValue = $filter('translate')('ACTIVE'); 
var lowercaseValue = $filter('lowercase')(translatedValue); 
$scope.finalValue = $filter('limitTo')(lowercaseValue, 5) 

I stworzył usługę inspirowaną this answer.

app.service('FilterChain', 
['$filter', function($filter) { 
    var chain = { 
     value : '', 
     start : function(value) { 
      this.value = value; 
      return this; 
     }, 
     applyFilter : function(filterName, args) { 
      args = args || []; 
      args.unshift(this.value); 
      this.value = $filter(filterName).apply(undefined, args) 
      return this; 
     } 
    }; 

    return chain; 
}]); 

Wykorzystanie jest jak ten

$scope.value = FilterChain.start('Active') 
       .applyFilter('translate') 
       .applyFilter('limitTo', [5]) 
       .applyFilter('uppercase') 
       .value; 

Można korzystać z usługi z innymi filtrami i obiekty, takie jak tablice. Zobacz działający przykład: JSFiddle

Powiązane problemy