Valeur par défaut du modèle Angularjs si la liaison est nulle / non définie (avec filtre)

J’ai un modèle de liaison qui affiche un atsortingbut de modèle appelé «date», qui est une date, en utilisant le filtre de date d’Angular.

{{gallery.date | date:'mediumDate'}} 

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 “Various” s’il n’ya pas de date.

Je peux obtenir la logique de base en utilisant un opérateur binary:

 {{gallery.date || 'Various'}} 

Cependant, je ne peux pas le faire fonctionner avec le filtre de date:

 {{gallery.date | date:'mediumDate' || "Various"}} 

Comment puis-je utiliser l’opérateur binary à côté du filtre de date?

Il me semble que tout ce que j’avais à faire était de placer le côté gauche de l’expression dans des crochets:

 {{(gallery.date | date:'mediumDate') || "Various"}} 

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:

 {{aPrice | currency | ifEmpty:'N/A'}} {{aNum | number:3 | ifEmpty:0}} 

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" }} 

J’ai vraiment aimé cette réponse, avec ngBind, votre texte par défaut peut simplement vivre dans le corps de l’élément, et si le ngBind a un résultat non nul / non défini, votre contenu est automatiquement remplacé et tout le monde sera content.

angularjs définition des valeurs par défaut à afficher avant l’évaluation

Comment puis-je utiliser l’opérateur binary à côté du filtre de date?

 {{gallery.date | date:'mediumDate' || "Date Empty"}} 

vous essayez aussi:

 {{ gallery.date == 'NULL' ? 'mediumDate' : "gallery.date"}}