मैं कई तर्कों के साथ Angular.js फ़िल्टर कैसे कॉल कर सकता हूं?


297

से के रूप में प्रलेखन , हम इस तरह के रूप में एक फिल्टर कॉल कर सकते हैं तारीख इस तरह:

{{ myDateInScope | date: 'yyyy-MM-dd' }}

यहाँ दिनांक एक फ़िल्टर है जो एक तर्क लेता है।

टेम्प्लेट और जावास्क्रिप्ट कोड से अधिक मापदंडों के साथ फिल्टर को कॉल करने के लिए वाक्यविन्यास क्या है?

जवाबों:


621

टेम्प्लेट में, आप कॉलन द्वारा फ़िल्टर तर्क अलग कर सकते हैं ।

{{ yourExpression | yourFilter: arg1:arg2:... }}

जावास्क्रिप्ट से, आप इसे कहते हैं

$filter('yourFilter')(yourExpression, arg1, arg2, ...)

वास्तव में ऑर्डरबी फिल्टर डॉक्स में छिपा हुआ एक उदाहरण है ।


उदाहरण:

मान लें कि आप एक ऐसा फ़िल्टर बनाते हैं जो चीज़ों को नियमित अभिव्यक्तियों से बदल सकता है:

myApp.filter("regexReplace", function() { // register new filter

  return function(input, searchRegex, replaceRegex) { // filter arguments

    return input.replace(RegExp(searchRegex), replaceRegex); // implementation

  };
});

सभी अंकों को सेंसर करने के लिए एक टेम्प्लेट में आमंत्रण:

<p>{{ myText | regexReplace: '[0-9]':'X' }}</p>

4
HTML टेम्पलेट बाइंडिंग {{filter_expression | फ़िल्टर: एक्सप्रेशन: तुलनित्र}}, जावास्क्रिप्ट $ फ़िल्टर ('फ़िल्टर') (filter_expression, एक्सप्रेशन, तुलनित्र) में
— रोमन

@pulkitsinghal क्या मतलब है आपका? JSFiddle या प्लंकर में अपने समस्याग्रस्त कोड दिखाएं।
— रोमन स्किलारोव

अच्छा होता अगर आप सिर्फ जावास्क्रिप्ट में फ़िल्टर पोस्ट करते
— Obi

1
@ ओबीओनोराह ओके, बस कॉस्फीस्क्रिप्ट का जावास्क्रिप्ट में अनुवाद किया।
— nh2

1
अच्छी चीज़। सूची के शीर्ष में यह उत्तर क्यों नहीं है?
— thethakuri

11

मैंने नीचे उल्लेख किया है जहां मैंने कस्टम फ़िल्टर का भी उल्लेख किया है, इन फ़िल्टर को कैसे कॉल करें जिसमें दो पैरामीटर हैं

countryApp.filter('reverse', function() {
    return function(input, uppercase) {
        var out = '';
        for (var i = 0; i < input.length; i++) {
            out = input.charAt(i) + out;
        }
        if (uppercase) {
            out = out.toUpperCase();
        }
        return out;
    }
});

और html से टेम्पलेट का उपयोग करके हम उस फिल्टर को नीचे की तरह कॉल कर सकते हैं

<h1>{{inputString| reverse:true }}</h1>

यदि आप देखते हैं, तो पहला पैरामीटर inputString है और दूसरा पैरामीटर सही है जो कि: "प्रतीकों" का उपयोग करके "रिवर्स" के साथ संयुक्त है


4

यदि आप अपने फ़िल्टर को एनजी-विकल्प के अंदर कॉल करना चाहते हैं, तो कोड इस प्रकार होगा:

ng-options="productSize as ( productSize | sizeWithPrice: product )  for productSize in productSizes track by productSize.id"

जहां फ़िल्टर का आकार छोटा होता है, वहीं PriceFilter और इसमें दो पैरामीटर उत्पाद और उत्पाद होते हैं



0

यदि आपको फ़िल्टर के साथ दो या अधिक व्यवहार की आवश्यकता है, तो उन्हें श्रृंखलाबद्ध करना संभव है:

{{ value | decimalRound: 2 | currencySimbol: 'U$' }} 
// 11.1111 becomes U$ 11.11

संभव डुप्लिकेट: stackoverflow.com/questions/16227325/…
— sjokkogutten

1
प्रश्न को संबोधित नहीं करता है "मैं कई तर्कों के साथ एक Angular.js फ़िल्टर कैसे कह सकता हूं?" (इसके बजाय "मैं कई फ़िल्टर कैसे कॉल करूं?")
— rom99

-1

इस कोड में, jsondata हमारी सरणी है और फ़ंक्शन रिटर्न में हम jsondata में मौजूद 'संस्करण' की जाँच कर रहे हैं।

var as = $filter('filter')(jsondata, function (n,jsondata){
   return n.filter.version==='V.0.3'
});

console.log("name is " + as[0].name+as[0]); 
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.