Javascript 如果绑定为空,则为角度默认值
我看到过一个类似的问题,并一直追问到发球台 我的对象如下所示:Javascript 如果绑定为空,则为角度默认值,javascript,angularjs,Javascript,Angularjs,我看到过一个类似的问题,并一直追问到发球台 我的对象如下所示: { "image": { "icon_url": "http://static.giantbomb.com/uploads/square_avatar/9/93770/2496414-dying-light-2013523175751_8.jpg", "medium_url": "http://static.giantbomb.com/uploads/scale_medium/9/93770/2496414-dy
{
"image": {
"icon_url": "http://static.giantbomb.com/uploads/square_avatar/9/93770/2496414-dying-light-2013523175751_8.jpg",
"medium_url": "http://static.giantbomb.com/uploads/scale_medium/9/93770/2496414-dying-light-2013523175751_8.jpg",
"screen_url": "http://static.giantbomb.com/uploads/screen_medium/9/93770/2496414-dying-light-2013523175751_8.jpg",
"small_url": "http://static.giantbomb.com/uploads/scale_small/9/93770/2496414-dying-light-2013523175751_8.jpg",
"super_url": "http://static.giantbomb.com/uploads/scale_large/9/93770/2496414-dying-light-2013523175751_8.jpg",
"thumb_url": "http://static.giantbomb.com/uploads/scale_avatar/9/93770/2496414-dying-light-2013523175751_8.jpg",
"tiny_url": "http://static.giantbomb.com/uploads/square_mini/9/93770/2496414-dying-light-2013523175751_8.jpg"
},
"name": "Dying Light",
"original_game_rating": null,
"original_release_date": null,
"objectID": "346569380"
}
我将左侧表达式用括号括起来,但对于年份为null
的项目,它不显示“TBA”
<span>{{ (getDate(hit.original_release_date) | date:'yyyy') || 'TBA' }}</span>
以及dateToISO
过滤器:
.filter('dateToISO', function() {
return function(input) {
var dateTime = input.split(" ");
var date = dateTime[0];
var datePartials = date.split("-");
var time = dateTime[1];
var timePartials = time.split(":");
var formattedDate = new Date();
formattedDate.setFullYear(datePartials[0]);
formattedDate.setMonth(datePartials[1]-1);
formattedDate.setDate(datePartials[2]);
formattedDate.setHours(timePartials[0]);
formattedDate.setMinutes(timePartials[1]);
return formattedDate;
};
})
试试这个:
{{hit.original_release_date ? (hit.original_release date | date:'yyyy') : 'TBA'}}
还实现默认过滤器
app.filter('default', [function(){
return function(value, def) {
return value || def;
};
}]);
并将其用作:
<span>{{getDate(hit.original_release_date) | date:'yyyy' | default: 'TBA'}}</span>
添加:
在angular中,您必须始终执行以下操作:
<span ng-if="hit.original_release_date">{{getDate(hit.original_release_date) | date:'yyyy'}}</span>
<span ng-if="!hit.original_release_date">TBA</span>
{{getDate(hit.original_release_date)}日期:'yyyy'}
TBA
AngularJS版本?你能显示getDate
函数吗?@tasseKATT用getDate
函数更新了问题。使用Angular 1.2.8。目前无法复制它。您是否也可以显示自定义的dateToISO
筛选器?您确定返回了null
?可能是它的字符串'null'
?也实现默认值
过滤器。并将其用作。|日期:'yyyy'|默认值:'TBA'
打印到页面时显示为“未定义”。仍然返回为“未定义”。奇怪的没有办法分离右侧表达式并在左侧使用函数吗?您的日期过滤器在哪里?它位于我的模块之后<代码>角度.module('myApp',['ngRoute','ngSanitize'])。过滤器('dateToISO',函数(){…
.nodateToISO
,date
。它为您提供了yyyy
…无论如何,请在答案的底部查看解决问题的简单方法。啊,我想这是另一种方法。我想这会起作用,但我也想知道为什么我不能用函数来实现lh-rh表达式。
.filter('dateToISO', function() {
return function(input) {
if (!input || !input.match(/^\d{2}-\d{2}-\d{4} \d{2}\:\d{2}\:\d{2}$/)) return;
var dateTime = input.split(" ");
var date = dateTime[0];
var datePartials = date.split("-");
var time = dateTime[1];
var timePartials = time.split(":");
var formattedDate = new Date();
formattedDate.setFullYear(datePartials[0]);
formattedDate.setMonth(datePartials[1]-1);
formattedDate.setDate(datePartials[2]);
formattedDate.setHours(timePartials[0]);
formattedDate.setMinutes(timePartials[1]);
return formattedDate;
};
})
<span ng-if="hit.original_release_date">{{getDate(hit.original_release_date) | date:'yyyy'}}</span>
<span ng-if="!hit.original_release_date">TBA</span>