gpt4 book ai didi

javascript - 绑定(bind)为空时的 Angular 默认值

转载 作者:搜寻专家 更新时间:2023-11-01 04:08:39 25 4
gpt4 key购买 nike

我看到了一个类似的问题,并一直关注它。 Angular Template Default Value if Binding Null / Undefined (With Filter)

我的对象看起来像这样:

{
"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>

我有一种感觉,这是因为我正在引用一个函数并且已经使用了一组括号。我该如何解决这个问题...?

在此方面的任何帮助表示赞赏。提前致谢!

更新:

这是 getDate() 函数:

$scope.getDate = function(date) {
return $filter('dateToISO')(date);
};

还有 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;
};
})

最佳答案

也实现默认过滤器。

app.filter('default', [function(){
return function(value, def) {
return value || def;
};
}]);

并将其用作:

<span>{{getDate(hit.original_release_date) | date:'yyyy' | default: 'TBA'}}</span>

更新:如果收到 undefinednull,您的 dateToISO 过滤器也可能失败。
检查它的输入。

.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;
};
})

添加:

在 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>

关于javascript - 绑定(bind)为空时的 Angular 默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27490652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com