我正在实现 Angular-UI datepicker作为指令,我试图让它将今天的日期显示为字符串“Today”而不是 2015/04/27。
这可能吗?我可以轻松地将 $scope.dt
更改为 "Today"
但如果我想将其保存到我的数据库中,我需要将其转换回来,这很困惑。它看起来像自定义格式......但我从这里的代码中看不到这是如何完成的?
最佳答案
您可以编写一个过滤器,该过滤器将包装 AngularJS 提供的原始 date
过滤器并接受自定义格式,如果格式是默认值或传递的日期不是今天,则将格式转发到 date
。
这是一个草图:
.filter('my_date', ['dateFilter', function (dateFilter) {
function filter(date, format, timezone) {
var today = new Date();
if (!(date instanceof Date)) {
date = new Date(date);
}
if (format == "today") {
if (date.getFullYear() == today.getFullYear() && date.getMonth() == today.getMonth() && date.getDate() == date.getDate()) {
return "Today";
} else {
format = "yyyy/mm/dd"; // this is default
}
}
return dateFilter(date, format, timezone);
}
return filter;
}])
使用:
{{dt | my_date:'today'}}
这里还有改进的空间:您可以查看更多专用程序,用于将 AngularJS 源中传递到过滤器的任何内容转换为日期(它特别接受 JSON);默认格式可以参数化。
注意。如果您准备好自己渲染带有日期的输入,即当您可以选择要使用的过滤器时,概述的技术将起作用。它不适用于 AngularUI 中的即用型 datepicker-popup
- 它使用内置的 date
过滤器,除了修改 AngularUI 的源之外,似乎没有办法覆盖它。如果弹出窗口是您需要的,您必须自己添加“弹出逻辑”
关于javascript - 在 Angular-UI-Bootstrap Datepicker 中的设置日期(date=today)显示自定义字符串 ("Today")?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29899590/