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


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.