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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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>

如何在日期过滤器旁边使用二元运算符?

答案

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

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

我做了以下过滤器:

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" }}
另一答案

如何在日期过滤器旁边使用二元运算符?

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

你也尝试:

<span class="gallery-date">{{ gallery.date == 'NULL' ? 'mediumDate' : "gallery.date"}}</span>
另一答案

我真的很喜欢这个答案,使用ngBind,你的默认文本可以只存在于元素体中,然后如果ngBind评估为非null / undefined,你的内容会自动替换,并且每个人都快乐

angularjs setting default values to display before evaluation

以上是关于Angularjs模板默认值,如果绑定空/未定义(使用过滤器)的主要内容,如果未能解决你的问题,请参考以下文章

AngularJS 自定义指令两种方式绑定

AngularJS 1.7.9 从控制器到组件的绑定变量提供未定义的值

绑定文本框时,AngularJs范围未定义

由于空值而无法评估绑定时使用默认值

AngularJS:指令中未绑定的值

AngularJS自定义指令之可选参数replace