javascript - 在 Angular-UI-Bootstrap Datepicker 中的设置日期(date=today)显示自定义字符串 ("Today")?

标签 javascript angularjs datepicker angular-ui-bootstrap

我正在实现 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/

相关文章:

javascript - Toggle.slide.right 不能在移动设备上正常工作

javascript - 如果提取的 TXT 不包含某个单词,我如何告诉 imacros 转到某个 url?

javascript - 当我动态添加新的日期选择器时,以前的日期选择器值会重置吗?

jquery - 在 codeigniter 中使用 jquery 的日期选择器不起作用

javascript - Bootstrap-Datepicker 使用 "setDate"时未选择日期

javascript - 未捕获的语法错误 : missing ) after argument list using . css()

javascript - 检测到字符串时从类中获取 ID

javascript - 按相对于玩家在玩家数组中的位置的顺序显示玩家

angularjs - 在指令中使用 controllerAs 语法访问父方法

angularjs - 如何获取 Controller 中数组项的索引位置并在angularjs中传递值