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

时间:2017-03-15 09:57:00

标签: javascript angularjs angular-filters angular-translate

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

使用硬编码格式我会:

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

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

这样的事情:

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

或最终:

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

如果'yyyy-MM-dd'过滤器未返回任何内容,则

dateFormat为默认格式。

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

{{foo | date:dateFormat}}

但想知道是否可以在没有其他范围变量的情况下直接在视图中完成。

1 个答案:

答案 0 :(得分:1)

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

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

{{foo | myCustomerFilter}}

或者,如果您想将translate参数传递到过滤器,您可以定义自定义过滤器,如下所示

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

在您的视图中,您可以将translate参数传递到自定义过滤器中。

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