मैं कई तर्कों के साथ 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.