使用另一个过滤器传递的参数应用 Angular 过滤器

Apply Angular filter with an argument passed by another filter

我需要使用由另一个过滤器创建的格式的日期过滤器。尝试将 date 过滤器与 angular-translate 过滤器结合使用。

使用硬编码格式我会:

{{foo | date:'yyyy-MM-dd'}}

我需要的是通过另一个过滤器获取日期格式。

像这样:

{{foo | date:$filter('translate')('global.dateFormatNoTime')}}

或者最终是这样的:

{{foo | date:('yyyy-MM-dd' | dateFormat)}}

如果 dateFormat 过滤器未返回任何内容,则

'yyyy-MM-dd' 是默认格式。

现在,我在控制器中使用范围变量并在其上应用了第二个过滤器来执行此操作。

{{foo | date:dateFormat}}

但想知道是否可以在没有另一个范围变量的情况下直接在视图中完成此操作。

.filter('myCustomerFilter', function ($filter) {
    return function (date) {
        var dateFormat = $filter('translate')('global.dateFormatNoTime');
        return $filter('date')(date, dateFormat);
    }
});

并且您可以在您的视图中使用此自定义过滤器。

{{foo | myCustomerFilter}}

或者,如果您想将翻译参数传递到您的过滤器中,您可以像下面这样定义您的自定义过滤器,

.filter('myCustomerFilter', function ($filter) {
    return function (input, date, translateOption) {
        var dateFormat = $filter('translate')(translateOption);
        return $filter('date')(dateFormat);
    }
});

并且在您看来,您可以将翻译参数传递到您的自定义过滤器中。

{{foo | myCustomerFilter : 'global.dateFormatNoTime'}}