Eu tenho uma ligação de modelo que exibe um atributo de modelo chamado 'date', que é uma data, usando o filtro de data do Angular.
<span class="gallery-date">{{gallery.date | date:'mediumDate'}}</span>
Por enquanto, tudo bem. No entanto, no momento, se não houver valor no campo data, a ligação não exibirá nada. No entanto, gostaria que ele exibisse a string 'Various' se não houver data.
Eu posso obter a lógica básica usando um operador binário:
<span class="gallery-date">{{gallery.date || 'Various'}}</span>
No entanto, não consigo trabalhar com o filtro de data:
<span class="gallery-date">{{gallery.date | date:'mediumDate' || "Various"}}</span>
Como posso usar o operador binário ao lado do filtro de data?
{{(gallery.date | date:'mediumDate') || "0"}}
Eu fiz o seguinte filtro:
Para ser usado assim:
fonte
if (angular.isUndefined(defaultValue) || ... )
instrução dentro da existente, através da qual odefString
filtro retorna a string "default
" (outras provavelmente virão mais tarde). Isso me permite usá-lo como<span>{{expected.string | defString}}</span>
e obterdefault
como o nível final de fallback.Apenas no caso de você querer tentar outra coisa. Isto é o que funcionou para mim:
Baseado no operador ternário, que possui a seguinte estrutura:
Como resultado:
fonte
Como posso usar o operador binário ao lado do filtro de data?
você também tenta:
fonte
Eu realmente gostei desta resposta, com ngBind, seu texto padrão pode apenas viver no corpo do elemento e, se o ngBind for avaliado como algo não nulo / indefinido, seu conteúdo será substituído automaticamente e tudo ficará feliz
angularjs definindo valores padrão a serem exibidos antes da avaliação
fonte
No seu cshtml,
No seu arquivo JS, talvez app.js,
Fora do app.controller, adicione o filtro abaixo.
Aqui, a "minha data" é a função que você está chamando para analisar a data. Aqui, o "app" é a variável que contém o angular.module
fonte