如何声明我可以像 AngularJS 表达式中的函数一样使用的指令或服务

How to declare directive or service i can use like a function in AngularJS expression

我有很多转换日期时间格式的函数。 我想创建一个指令或服务来在我的项目中的任何地方调用这些函数。

这是我的功能之一。

$scope.formatDateTime = function (item) {
    if (item != null) {

        var d = moment().utc();
        if (item instanceof Date)
            d = new moment(item).utc();

        else if (item instanceof moment)
            d = item;

        else
            d = new moment(item, "YYYY-MM-DD HH:mm Z").utc();

        if (d != null) {

            moment.locale($rootScope.language);
            var strReturn = d.format("L LT");
            return strReturn;
        }
    }

    return null;
};

我的问题是我必须在我需要使用它们的每个控制器中复制我的函数,所以我想调用一个服务或指令,我真的不知道到底是什么,调用这些函数就像下面:

<div>{{formatDateTime(dateToConvert)}}</div>

最佳解决方案是创建自定义 filter

.filter('dateFilter', function() {
    return function(item) {
        if (item != null) {
            var d = moment().utc();
            if (item instanceof Date)
                d = new moment(item).utc();
            else if (item instanceof moment)
                d = item;
            else
                d = new moment(item, "YYYY-MM-DD HH:mm Z").utc();
            if (d != null) {
                moment.locale($rootScope.language);
                var strReturn = d.format("L LT");
                return strReturn;
            }
        }
        return null;
    }
})

在html中,这样调用

<div>{{dateToConvert | dateFilter}}</div>