property number multiple example array javascript angularjs angularjs-filter

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);