如果绑定为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设置默认值以在评估之前显示