【问题标题】:Add new format to Angular date filter?向 Angular 日期过滤器添加新格式?
【发布时间】:2016-12-09 20:09:39
【问题描述】:

是否可以在 Angular 日期过滤器中注入新的速记格式?

例如,我目前可以这样做:{{ myScope.timestamp | date: 'shortDate' }}

我想做的是:{{ myScope.timestamp | date: 'paddedShortDate' }},这将强制用前导 0 填充单个数字日期部分。

我意识到我可以创建自己的过滤器来为我做这件事——我更好奇现有的过滤器是否以任何方式广泛。

【问题讨论】:

  • Whelp,进行了一些编辑并重新阅读了一些东西,但我找到了一种方法。

标签: javascript angularjs datefilter


【解决方案1】:

查看源代码hereDATE_FORMATS是从$locale获取的。虽然我不建议编辑这些(因为$locale.DATE_FORMATS 是一个私有 API,并且将来可能会更改),但您应该可以通过运行块来做到这一点:

app.run(['$locale', function($locale) {
    $locale.DATETIME_FORMATS.paddedShortDate = 'MM/dd/yy';
}]);

正如您所提到的,您不想创建另一个过滤器,但我认为这将是更好的方法。一个简单的过滤器应该可以正常工作:

var MY_DATETIME_FILTERS = {
    'paddedShortDate': 'MM/dd/yy'
};

app.filter('myFormat', ['$filter', function($filter) {
    return function(format) {
        return $filter('date')(input, MY_DATETIME_FILTERS[format] || format);
    }
}]);

【讨论】:

  • 小更正回答任何未来访问此页面的访问者:return function(input, format) { return $filter('date')(input, MY_DATETIME_FILTERS[format] || format); }
猜你喜欢
  • 1970-01-01
  • 2015-10-20
  • 2015-03-29
  • 1970-01-01
  • 1970-01-01
  • 2014-03-14
  • 1970-01-01
  • 1970-01-01
  • 2020-11-17
相关资源
最近更新 更多