2013-09-05 9 views
64

एक निश्चित संपत्ति है कि अशक्त तो के लिए नहीं है के साथ आइटम को फिल्टर करने की कोशिश कर रहा है:AngularJS फिल्टर नहीं अशक्त

var details = [{name:'Bill', shortDescription: null}, {name:'Sally', shortDescription: 'A girl'}] 

मैं केवल एक ली दिखाना चाहते हैं; सैली के लिए एक। यह वही है मुझे कोई सफलता

<ul> 
<li ng-repeat="detail in details | filter:{shortDescription:'!'}"> 
<p>{{detail.shortDescription}}</p> 
</li> 
</ul> 

किसी भी विचार कैसे मैं एक कस्टम फ़िल्टर बनाना बिना ऐसा कर सकते हैं के साथ की कोशिश की है है? या फिर भी, कस्टम फ़िल्टर कैसा दिखता है?

+0

अलग समाधान आसान है:: https://stackoverflow.com/ लेकिन तुम सच ड्रॉप या यह गलत काम करने के लिए एक नहीं अशक्त जांच करने के लिए बनाने की जरूरत है ए/24 992197/257470 –

उत्तर

31

अंगुलर> = 1.4 के लिए https://github.com/angular/angular.js/issues/11573 के अनुसार, अनुशंसा का उपयोग करना है 'जो शून्य/अपरिभाषित को छोड़कर किसी भी आदिम से मेल खाता है।

<ul> 
    <li ng-repeat="detail in details | filter:{shortDescription: ''}"> 
     <p>{{detail.shortDescription}}</p> 
    </li> 
</ul> 
+0

पोस्ट करने के लिए धन्यवाद! –

+2

काम करता है, धन्यवाद। लेकिन इस मामले में angularjs वाक्यविन्यास बेतुका है (फ़िल्टर--)। – MCurbelo

+0

@MCurbelo, फ़िल्टर सिंटैक्स के साथ मेरा स्वयं का पालतू आस्तीन यह है कि "फ़िल्टर" शब्द संदिग्ध है। * शून्य विवरण के लिए * फ़िल्टरिंग कर रहे हैं? या * आउट * शून्य विवरण फ़िल्टरिंग? आप कोड को देखने से नहीं बता सकते हैं। एक बेहतर नाम "फ़िल्टरऑट" या "शोऑनली" (उचित अर्थशास्त्र के साथ) होगा। – user2023861

117

कोणीय> = 1.3.16 नवीनतम करने के लिए उपयोग '' (रिक्त स्ट्रिंग) (या '!!' भी काम करता है) (1.5.5 लेखन/अपडेट के समय)

<ul> 
    <li ng-repeat="detail in details | filter:{shortDescription: ''}"> 
     <p>{{detail.shortDescription}}</p> 
    </li> 
</ul> 

उदाहरण: http://jsfiddle.net/TheSharpieOne/1mnachk6/


कोणीय> = 1.3.6 और < = 1.3.15 उपयोग '!null'

<ul> 
    <li ng-repeat="detail in details | filter:{shortDescription: '!null'}"> 
     <p>{{detail.shortDescription}}</p> 
    </li> 
</ul> 

उदाहरण: http://jsfiddle.net/TheSharpieOne/4wxs67yv/


कोणीय> = 1.2 और < = 1.3.5 उपयोग '' (रिक्त स्ट्रिंग) (या '!!' भी काम करता है)

<ul> 
    <li ng-repeat="detail in details | filter:{shortDescription: ''}"> 
     <p>{{detail.shortDescription}}</p> 
    </li> 
</ul> 

उदाहरण: http://jsfiddle.net/TheSharpieOne/ovsqf17n/


कोणीय < 1.2 '!!'

<ul> 
    <li ng-repeat="detail in details | filter:{shortDescription: '!!'}"> 
     <p>{{detail.shortDescription}}</p> 
    </li> 
</ul> 

उदाहरण: http://jsfiddle.net/TheSharpieOne/RGEdc/


कुल मिलाकर, '!!' सबसे अच्छा समर्थन है, लेकिन '' (empty string) is recommended and intended for this

+3

बहुत बहुत धन्यवाद।एक घंटे से अधिक समय तक वेब की खोज की और –

+2

कोई समस्या नहीं मिली। यह 'अपरिभाषित' भी फ़िल्टर करता है। – TheSharpieOne

+0

स्वीट। ऐसा लगता है कि यह 'झूठी' के लिए काम नहीं करता है। –

1

यह ध्यान देने योग्य है कि खाली उद्धरण समाधान का उपयोग करने के लायक है, आप false की अपनी डिफ़ॉल्ट पर तुलनित्र छोड़ने के लिए की जरूरत है। आप हो सकता है आपके नियंत्रक फिल्टर में यहाँ सच डाल, इस तरह के लिए इस्तेमाल किया:

const myAssessments = 
     this.filterFilter(this.assessments, {userId: this.user.id}, true); 

सख्त फिल्टर उस प्रकार अंतिम true के बिना काम नहीं होता।

const activeAndHistoric = 
     this.filterFilter(filteredAssessments, {historicYear: ''}, false); 
2

मुझे लगता है कि यह पढ़ने के लिए

<ul> 
    <li ng-repeat="detail in details" ng-if="detail.shortDescription"> 
     <p>{{detail.shortDescription}}</p> 
    </li> 
</ul> 
संबंधित मुद्दे