我有一个模板绑定,它使用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>
如何在日期过滤器旁边使用二元运算符?
答案 0 :(得分:275)
原来我需要做的就是将表达式的左侧包裹在软括号中:
<span class="gallery-date">{{(gallery.date | date:'mediumDate') || "Various"}}</span>
答案 1 :(得分:53)
我做了以下过滤器:
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>
答案 2 :(得分:33)
以防你想尝试别的东西。这对我有用:
基于具有以下结构的三元运算符:
condition ? value-if-true : value-if-false
结果:
{{gallery.date?(gallery.date | date:'mediumDate'):"Various" }}
答案 3 :(得分:7)
如何在日期过滤器旁边使用二元运算符?
<span class="gallery-date">{{gallery.date | date:'mediumDate' || "Date Empty"}}</span>
你也尝试:
<span class="gallery-date">{{ gallery.date == 'NULL' ? 'mediumDate' : "gallery.date"}}</span>
答案 4 :(得分:3)
我真的很喜欢这个答案,使用ngBind,你的默认文本可以只存在于元素体中,然后如果ngBind评估为非null / undefined,你的内容会被自动替换,并且每个人都快乐
angularjs setting default values to display before evaluation
答案 5 :(得分:0)
在您的cshtml中,
<tr ng-repeat="value in Results">
<td>{{value.FileReceivedOn | mydate | date : 'dd-MM-yyyy'}} </td>
</tr>
在您的JS文件中,也许是app.js,
在app.controller之外,添加以下过滤器。
这里,“ mydate”是您用来解析日期的函数。 这里的“ app”是包含angular.module的变量
app.filter("mydate", function () {
var re = /\/Date\(([0-9]*)\)\//;
return function (x) {
var m = x.match(re);
if (m) return new Date(parseInt(m[1]));
else return null;
};
});