2015-05-22 12 views
5

में एकाधिक फिल्टर उपयोग मैं वर्तमान मेंAngularJS - नियंत्रक

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

का उपयोग कर हम इस तरह अधिक फिल्टर है, तो नियंत्रक

में एक से अधिक फिल्टर का उपयोग करना चाहते हैं। नियंत्रक में इस तरह के पारंपरिक प्रारूप में मैं एकाधिक फ़िल्टर का उपयोग कैसे कर सकता हूं?

+0

आपका प्रश्न वास्तव में क्या है? प्रश्न का उत्तर है: आप पहले ही नियंत्रक में एकाधिक फ़िल्टर का उपयोग कर रहे हैं। –

+1

मैं एकाधिक फिल्टर @ जेबी निजेट का उपयोग कर रहा हूं। सरलीकृत प्रारूप मैं इससे चाहता हूं। –

+0

इसी तरह: http://stackoverflow.com/questions/27852445/how-to-chain-angularjs-filters-in-controller – khakiout

उत्तर

2

आप बस शुरू कर सकते हैं चर:

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

यह एक है:

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

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

या यहां तक ​​कि

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

एक और रणनीति को ध्यान में रखते रूप में एक ही वाक्य विन्यास का उपयोग करने के लिए किया जाएगा दिलचस्प सवाल है। आम तौर पर आप इस तरह या ऐसा ही कुछ कुछ करना होगा:

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

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

प्रयोग इस

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

आप अन्य फिल्टर के साथ सेवा का उपयोग कर सकते की तरह है और सरणियों के रूप में ऐसी वस्तुओं। यहां एक कार्य उदाहरण देखें: JSFiddle

संबंधित मुद्दे