2015-05-22 24 views
5

Çoklu Filtreler kullanım ben bu tür daha fazla filtre varsa andaangularjs - kontrolörü

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

kullanarak kontrolörü

birden fazla filtre kullanmak istiyorum. Birden fazla filtreyi denetleyici gibi geleneksel biçimde nasıl kullanabilirim?

+0

Sorunuz tam olarak nedir? Sorunun cevabı var: zaten kontrolörde birden fazla filtre kullanıyorsunuz. –

+1

Birden çok filtre kullanıyorum @JB Nizet. Basitleştirilmiş formatı bundan istiyorum. –

+0

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

cevap

2

Sadece tanıtabilirsiniz değişkenleri:

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

This is an:

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

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

Hatta

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

Diğer bir strateji görünümünde aynı sözdizimini kullanmak olacaktır ilginç soru. Genellikle böyle böyle bir şey ya da bir şey yapacağını:

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

Ben this answer esinlenerek bir hizmeti yarattı.

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; 
}]); 

Kullanımı Bu

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

diğer filtrelerle hizmetini kullanabilirsiniz gibidir ve diziler gibi nesneleri. Burada bir çalışma örneğine bakın: JSFiddle