Kab*_*bb5 19 angularjs angularjs-filter
而不是必须为每次调用date过滤器定义自定义格式,有没有办法全局定义默认格式(除了'medium')?
我希望将格式设置在一个文件中,而不是在我的代码中的所有位置(日期格式可能会在将来更改,并且在一个文件中进行修改比在许多文件中进行更改要好得多).
这就是我现在正在做的事情(每次定义日期格式):
{{systemTime | date:'dd MMMM @ HH:mm:ss'}}
{{modifiedTime | date:'dd MMMM @ HH:mm:ss'}}
{{getShippedTime() | date:'dd MMMM @ HH:mm:ss'}}
etc.
Run Code Online (Sandbox Code Playgroud)
我正在考虑创建一个自定义过滤器(让它调用它myDate),它将充当包装器,然后date使用我的自定义格式将日期字符串传递给Angular 过滤器,因此我的代码可能如下所示:
{{systemTime | myDate}}
{{modifiedTime | myDate}}
{{getShippedTime() | myDate}}
etc.
Run Code Online (Sandbox Code Playgroud)
但是,我无法弄清楚如何使myDate滤镜指向角度date滤镜.
谢谢你的帮助.
Kab*_*bb5 41
基于一些更多的研究,然后考虑moderndegree的评论,我发现以下myDate过滤器将起作用:
.filter('myDate', function($filter) {
var angularDateFilter = $filter('date');
return function(theDate) {
return angularDateFilter(theDate, 'dd MMMM @ HH:mm:ss');
}
});
Run Code Online (Sandbox Code Playgroud)
试试这个
angular.module('yourmodule').filter('myDate', function($filter)
{
return function(input)
{
if(input == null){ return ""; }
var _date = $filter('date')(new Date(input), 'dd MMMM @ HH:mm:ss');
return _date.toUpperCase();
};
});
Run Code Online (Sandbox Code Playgroud)
HTML
{{systemTime | myDate}}
Run Code Online (Sandbox Code Playgroud)
这不是你明确要求的,使用装饰器。它内置的角度和设计的补丁services,directives,filters等...
在您的情况下,如果未提供日期过滤器,则应使用自定义日期格式。
app.config(function ($provide) {
$provide.decorator('dateFilter', function ($delegate) {
return function () {
// Check if the date format argument is not provided
if (!arguments[1]) {
arguments[1] = 'dd MMMM @ HH:mm:ss';
}
var value = $delegate.apply(null, arguments);
return value;
};
})
});
Run Code Online (Sandbox Code Playgroud)