कोणीय जेएस फ़िल्टर बराबर नहीं है


83

एक बहुत ही बुनियादी सवाल की तरह लगता है, लेकिन मैं वाक्यविन्यास सही नहीं मिल सकता है ..

<li class="list-group-item" ng-repeat="question in newSection.Questions | filter:Id != '-1'; " ng-mouseenter="hover = true" ng-mouseleave="hover = false">
    <div href="#" editable-text="question.Text">{{question.Text}}</div>
</li>

मैं बस यही चाहता हूँ कि सभी प्रश्न जहाँ आईडी -1 न हो। मैं क्या गलत कर रहा हूं। धन्यवाद!


आपको एक कस्टम फ़िल्टर लिखने की आवश्यकता है जो प्रश्न की जाँच करता है। =! -1। इसके अलावा, मुझे लगता है कि आपकी त्रुटि यह है कि आईडी प्रश्न की एक विशेषता है
— SoluableNonagon

@EliteOctagon आप कर सकते हैं - नीचे मेरा जवाब देखें।
— माइकल रोज

क्या आप दस्तावेज को देखते हैं? docs.angularjs.org/api/ng/filter/filter उस हिस्से में जहां expressionसमझाया गया है ( उपयोग में दूसरा पी -> तर्क ) filter: {Id: "!-1"}या उस तरह से कुछ करना चाल को करना है
— नेबुलसर

जवाबों:


165

वाक्य-विन्यास बस थोड़ा सा है, कोशिश करें:

<li class="list-group-item"
    ng-repeat="question in newSection.Questions | filter:{ Id: '!-1'}"
    ng-mouseenter="hover = true" ng-mouseleave="hover = false">

    <div href="#" editable-text="question.Text">{{question.Text}}</div>
</li>

थोड़ा JSFiddle देखें: http://jsfiddle.net/U3pVM/3845/

संपादित करें:

चर के साथ उदाहरण:

<script> var invalidId = '-1'; </script>
<li class="list-group-item"
    ng-repeat="question in newSection.Questions | filter:{ Id: '!' + invalidId}"
    ng-mouseenter="hover = true" ng-mouseleave="hover = false">

    <div href="#" editable-text="question.Text">{{question.Text}}</div>
</li>

यह किसी भी तरह चर के लिए भी काम कर सकते हैं? आपके फिडेल का यह मामूली संशोधन एक स्थिर के बजाय "नहीं-बराबर" मात्रा को एक चर में रखता है, और यह अब काम नहीं करेगा।
— डोमी

खैर आपको शायद अपने स्वयं के फ़िल्टर फ़ंक्शन को लिखने की ज़रूरत है, चलो इसे कॉल करें checkForXऔर फिर इसका उपयोग करें ... | filter:checkForXऔर सही या गलत लौटें यदि कोई मैच हो ...
— माइकल रोज

@ डोमी, मैंने एक और सामान्य उत्तर पोस्ट किया है जो आपके प्रश्न का उत्तर देता है। जब आपके पास समय हो तो इसकी जाँच करें
— फर्नांडो कार्वाल्होसा

1
@Tielman, अतिरिक्त चर घोषित करने में कोई ज़रूरत नहीं है। यह अच्छी तरह से काम करता है: "फ़िल्टर: {आईडी: '!" + notValid} "
— स्तालिनको

11
यह भी को फ़िल्टर कर देगा किसी भी Idजो होता है -1जैसे सबस्ट्रिंग, के रूप में -11या 2-1। मज़बूती से जाँचने के लिए कि क्या आप एक छोटे तुलनित्र फ़ंक्शन Idको नहीं -1लिखते हैं और फ़िल्टर के रूप में उपयोग करते हैं।
— andypea

20

हालाँकि @Michael Rose उत्तर इस मामले के लिए काम करता है, मुझे नहीं लगता कि यदि आप किसी वस्तु / चर को बराबर नहीं करने की कोशिश करेंगे

उस मामले में आप उपयोग कर सकते हैं:

जेएस :

filterId = -1

HTML:

<li ng-repeat="question in newSection.Questions | filter: !{ Id: filterId}">
</li>

एक और भी नेस्टेड मामला:

जेएस :

someQuestion = {
   someObject: {
     Id: 1
   }
}
newSection.Questions = [someQuestion]

एचटीएमएल

<li ng-repeat="question in newSection.Questions | filter: !{someObject : {Id: -1} }">
</li>

1
यह सिंटैक्स मेरे लिए काम नहीं करता है:! {Id: -1} लेकिन वैकल्पिक उत्तर महान काम करता है: {Id: '! - 1'}। शायद यह एक संस्करण अंतर था / है?
— python1981

हो सकता है। आप कौन सा संस्करण उपयोग कर रहे हैं?
— फर्नांडो कार्वाल्होसा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.