如果绑定为null / Undefined(带filter),则为Angular Template默认值

我有一个模板绑定,使用Angular的datefilter显示一个名为“date”的模型属性,这是一个date。

<span class="gallery-date">{{gallery.date | date:'mediumDate'}}</span> 

到现在为止还挺好。 但目前,如果date字段中没有值,则绑定不显示任何内容。 但是,如果没有date,我希望它显示string'各种'。

我可以使用二元运算符来获得基本的逻辑:

 <span class="gallery-date">{{gallery.date || 'Various'}}</span> 

但是我不能让它与datefilter一起工作:

 <span class="gallery-date">{{gallery.date | date:'mediumDate' || "Various"}}</span> 

如何在datefilter旁边使用二元运算符?

结果我所需要做的就是把expression式的左边用软括号括起来:

 <span class="gallery-date">{{(gallery.date | date:'mediumDate') || "Various"}}</span> 

我做了以下filter:

 angular.module('app').filter('ifEmpty', function() { return function(input, defaultValue) { if (angular.isUndefined(input) || input === null || input === '') { return defaultValue; } return input; } }); 

要这样使用:

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

以防万一你想尝试别的。 这对我来说是有效的:

基于以下结构的三元运算符:

 condition ? value-if-true : value-if-false 

结果:

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

我真的很喜欢这个答案,与ngBind,你的默认文本可以只是住在元素体,然后如果ngBind评估非null / undefined,你的内容被自动replace,和everythings开心

angularjs设置默认值以在评估之前显示