J'ai un modèle de liaison qui affiche un attribut de modèle appelé "date" qui est une date, en utilisant le filtre de date d'Angular.
<span class="gallery-date">{{gallery.date | date:'mediumDate'}}</span>
Jusqu'ici tout va bien. Cependant, pour le moment, s'il n'y a pas de valeur dans le champ de date, la liaison n'affiche rien. Cependant, j'aimerais qu'il affiche la chaîne "Divers" s'il n'y a pas de date.
Je peux obtenir la logique de base en utilisant un opérateur binaire:
<span class="gallery-date">{{gallery.date || 'Various'}}</span>
Cependant, je ne peux pas le faire fonctionner avec le filtre de date:
<span class="gallery-date">{{gallery.date | date:'mediumDate' || "Various"}}</span>
Comment puis-je utiliser l'opérateur binaire à côté du filtre de date?
Il s’est avéré que tout ce que je devais faire était d’envelopper le côté gauche de l’expression entre crochets:
<span class="gallery-date">{{(gallery.date | date:'mediumDate') || "Various"}}</span>
J'ai fait le filtre suivant:
angular.module('app').filter('ifEmpty', function() {
return function(input, defaultValue) {
if (angular.isUndefined(input) || input === null || input === '') {
return defaultValue;
}
return input;
}
});
Pour être utilisé comme ceci:
<span>{{aPrice | currency | ifEmpty:'N/A'}}</span>
<span>{{aNum | number:3 | ifEmpty:0}}</span>
Juste au cas où vous voudriez essayer autre chose. C'est ce qui a fonctionné pour moi:
Basé sur l'opérateur ternaire qui a la structure suivante:
condition ? value-if-true : value-if-false
À la suite:
{{gallery.date?(gallery.date | date:'mediumDate'):"Various" }}
Comment puis-je utiliser l'opérateur binaire à côté du filtre de date?
<span class="gallery-date">{{gallery.date | date:'mediumDate' || "Date Empty"}}</span>
vous essayez aussi:
<span class="gallery-date">{{ gallery.date == 'NULL' ? 'mediumDate' : "gallery.date"}}</span>
J'ai vraiment aimé cette réponse, avec ngBind, votre texte par défaut peut simplement résider dans le corps de l'élément, puis si ngBind est évalué comme quelque chose de non-null/indéfini, votre contenu est remplacé automatiquement et tout le reste heureux.
angularjs définissant les valeurs par défaut à afficher avant l'évaluation