javascript - number - multiple filter angularjs
El filtro Angularjs no es nulo (4)
Angular> = 1.3.16 a la última (1.5.5 al momento de escribir / actualizar) use ''''
(cadena vacía) (o ''!!''
también funciona)
<ul>
<li ng-repeat="detail in details | filter:{shortDescription: ''''}">
<p>{{detail.shortDescription}}</p>
</li>
</ul>
Ejemplo: http://jsfiddle.net/TheSharpieOne/1mnachk6/
Angular> = 1.3.6 y <= 1.3.15 usan ''!null''
Null ''!null''
<ul>
<li ng-repeat="detail in details | filter:{shortDescription: ''!null''}">
<p>{{detail.shortDescription}}</p>
</li>
</ul>
Ejemplo: http://jsfiddle.net/TheSharpieOne/4wxs67yv/
Angular> = 1.2 y <= 1.3.5 use ''''
(cadena vacía) (o ''!!''
también funciona)
<ul>
<li ng-repeat="detail in details | filter:{shortDescription: ''''}">
<p>{{detail.shortDescription}}</p>
</li>
</ul>
Ejemplo: http://jsfiddle.net/TheSharpieOne/ovsqf17n/
Angular <1.2 ''!!''
<ul>
<li ng-repeat="detail in details | filter:{shortDescription: ''!!''}">
<p>{{detail.shortDescription}}</p>
</li>
</ul>
Ejemplo: http://jsfiddle.net/TheSharpieOne/RGEdc/
En general, ''!!''
tiene el mejor soporte, pero ''''
(cadena vacía) se recomienda y está destinado para esto .
Intentando filtrar elementos con una propiedad determinada que no es nula. Por lo tanto, para:
var details = [{name:''Bill'', shortDescription: null}, {name:''Sally'', shortDescription: ''A girl''}]
Me gustaría mostrar solo un li; el de Sally Esto es lo que he intentado sin éxito
<ul>
<li ng-repeat="detail in details | filter:{shortDescription:''!''}">
<p>{{detail.shortDescription}}</p>
</li>
</ul>
¿Alguna idea de cómo puedo hacer esto sin crear un filtro personalizado? O aún así, ¿cómo se vería el filtro personalizado?
Creo que esto es más fácil de leer
<ul>
<li ng-repeat="detail in details" ng-if="detail.shortDescription">
<p>{{detail.shortDescription}}</p>
</li>
</ul>
De acuerdo con https://github.com/angular/angular.js/issues/11573 para Angular> = 1.4, la recomendación es usar '''' que coincida con cualquier primitiva excepto nula / indefinida.
<ul>
<li ng-repeat="detail in details | filter:{shortDescription: ''''}">
<p>{{detail.shortDescription}}</p>
</li>
</ul>
Vale la pena señalar que para usar la solución de presupuestos vacíos, debe dejar el comparador en su valor predeterminado de false
. Quizás estés acostumbrado a poner la verdad aquí en los filtros de tu controlador, así:
const myAssessments =
this.filterFilter(this.assessments, {userId: this.user.id}, true);
Ese tipo de filtro estricto no funcionaría sin el true
final. Pero debe descartar el valor verdadero o hacer que sea falso para que un cheque no nulo funcione:
const activeAndHistoric =
this.filterFilter(filteredAssessments, {historicYear: ''''}, false);