Angularjs 模板默认值,如果绑定空/未定义(带过滤器)

我有一个模板绑定,它使用Angular的日期过滤器显示一个名为“date”的模型属性,这是一个日期。

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

目前为止,一切都好。但是,目前,如果日期字段中没有值,则绑定不显示任何内容。但是,如果没有日期,我希望它显示字符串“Various”。

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

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

但是,我无法让它与日期过滤器一起使用:

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

如何将二进制运算符与日期筛选器一起使用?


答案 1

事实证明,我需要做的就是将表达式的左侧括在软括号中:

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

答案 2

我做了以下过滤器:

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>