Der Versuch, Elemente mit einer bestimmten Eigenschaft herauszufiltern, die nicht null ist. Also für:
var details = [{name:'Bill', shortDescription: null}, {name:'Sally', shortDescription: 'A girl'}]
Ich möchte nur ein Li zeigen; der für Sally. Das habe ich ohne Erfolg versucht
<ul>
<li ng-repeat="detail in details | filter:{shortDescription:'!'}">
<p>{{detail.shortDescription}}</p>
</li>
</ul>
Haben Sie eine Idee, wie ich dies tun kann, ohne einen benutzerdefinierten Filter zu erstellen? Oder wie würde der benutzerdefinierte Filter aussehen?
javascript
angularjs
angularjs-filter
Scotty Bollinger
quelle
quelle
Antworten:
Laut https://github.com/angular/angular.js/issues/11573 für Angular> = 1.4 wird empfohlen, '' zu verwenden, das mit jedem Grundelement außer null / undefiniert übereinstimmt.
<ul> <li ng-repeat="detail in details | filter:{shortDescription: ''}"> <p>{{detail.shortDescription}}</p> </li> </ul>
quelle
Winkel> = 1.3.16 bis späteste (1.5.5 zum Zeitpunkt des Schreibens / Aktualisierens) Verwendung
''
(leere Zeichenfolge) (oder'!!'
funktioniert auch)<ul> <li ng-repeat="detail in details | filter:{shortDescription: ''}"> <p>{{detail.shortDescription}}</p> </li> </ul>
Beispiel: http://jsfiddle.net/TheSharpieOne/1mnachk6/
Winkel> = 1.3.6 und <= 1.3.15 verwenden
'!null'
<ul> <li ng-repeat="detail in details | filter:{shortDescription: '!null'}"> <p>{{detail.shortDescription}}</p> </li> </ul>
Beispiel: http://jsfiddle.net/TheSharpieOne/4wxs67yv/
Winkel> = 1.2 und <= 1.3.5 verwenden
''
(leere Zeichenfolge) (oder'!!'
funktioniert auch)<ul> <li ng-repeat="detail in details | filter:{shortDescription: ''}"> <p>{{detail.shortDescription}}</p> </li> </ul>
Beispiel: http://jsfiddle.net/TheSharpieOne/ovsqf17n/
Winkel <1,2
'!!'
<ul> <li ng-repeat="detail in details | filter:{shortDescription: '!!'}"> <p>{{detail.shortDescription}}</p> </li> </ul>
Beispiel: http://jsfiddle.net/TheSharpieOne/RGEdc/
Insgesamt
'!!'
hat die beste Unterstützung, aber''
(leere Zeichenfolge) wird empfohlen und ist dafür vorgesehen .quelle
undefined
.value="!!"
funktionieren jsfiddle.net/2RBV9Ich denke, das ist leichter zu lesen
<ul> <li ng-repeat="detail in details" ng-if="detail.shortDescription"> <p>{{detail.shortDescription}}</p> </li> </ul>
quelle
Es ist erwähnenswert, dass Sie den Komparator auf der Standardeinstellung von belassen müssen, um die Lösung für leere Anführungszeichen zu verwenden
false
. Sie sind es vielleicht gewohnt, hier in Ihren Controller-Filtern Folgendes einzutragen:const myAssessments = this.filterFilter(this.assessments, {userId: this.user.id}, true);
Diese Art von strengen Filtern würde ohne das Finale nicht funktionieren
true
. Sie müssen jedoch true oder false löschen, damit eine Prüfung ohne Null funktioniert:const activeAndHistoric = this.filterFilter(filteredAssessments, {historicYear: ''}, false);
quelle