使用 TypeScript 和注入的 AngularJS 过滤器

2023-11-24

有人可以给我提供一个示例,说明如何在 TypeScript 中创建使用依赖注入的 Angular 过滤器。底部是我目前拥有的,工作正常,但我想做的是我想要访问 $filter 的函数,以便我可以将 return date.ToString() 行更改为 $filter '日期'。这样我就可以使用内置的日期过滤器来显示一个友好的简短日期。

class FriendlyDateFilter {

    public static Factory() {
        return function (input): string {
            if (angular.isDate(input)) {
                var date: Date = input;
                var today = new Date();
                var days = Math.abs(getDaysBetweenDates(today, date));
                if (days < 7) {
                    var dayInWeek = date.getDay();
                    switch (dayInWeek) {
                        case 0:
                            return "Sunday";
                            break;
                        case 1:
                            return "Monday";
                            break;
                        case 2:
                            return "Tuesday";
                            break;
                        case 3:
                            return "Wednesday";
                            break;
                        case 4:
                            return "Thursday";
                            break;
                        case 5:
                            return "Friday";
                            break;
                        case 6:
                            return "Saturday";
                            break;
                    }
                } else {
                    return date.toString();
                }
            } else {
                return input;
            }
        }

        function getDaysBetweenDates(d0, d1) {
            var msPerDay = 8.64e7;

            // Copy dates so don't mess them up
            var x0: any = new Date(d0);
            var x1: any = new Date(d1);

            // Set to noon - avoid DST errors
            x0.setHours(12, 0, 0);
            x1.setHours(12, 0, 0);

            // Round to remove daylight saving errors
                return Math.round((x1 - x0) / msPerDay);
            }
        }

    }
}

angular.module("ReadingLog").filter("FriendlyDateFilter", FriendlyDateFilter.Factory);

首先,您需要使用angular.d.ts定义文件.

然后,您只需执行以下操作:

MyFilter.$inject = ["$log"];
function MyFilter ($log: ng.ILogService): Function {
  return function(msg: string) {
    $log.log("I'm injected!");
    return msg;
  };
}
angular.module("testModule").filter("MyFilter", MyFilter);

$inject财产可在Function感谢这些行angular.d.ts:

// Support for painless dependency injection
interface Function {
  $inject?: string[];
}

See https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/angularjs/angular.d.ts#L12

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 TypeScript 和注入的 AngularJS 过滤器 的相关文章

随机推荐

  • 从c++程序调用python进行分发

    我想从我的 C 程序中调用 python 脚本文件 我不确定我将分发给的人是否安装了 python 我想从我的 C 程序中调用 python 脚本文件 这意味着您希望将 Python 嵌入到您的 C 应用程序中 正如中提到的将 Python
  • Jersey:JSON 对象列表

    我试图在我的 Jersey 实现资源类中检索对象的后集合 如下所示 POST Path send Consumes MediaType APPLICATION JSON Produces MediaType APPLICATION JSON
  • GSON 和 InstanceCreator 问题

    我有以下 POJO public interface Shape public double calcArea public double calcPerimeter public class Rectangle implement Sha
  • 发送带有个人资料图片的电子邮件 PHP 邮件功能

    当用户收到从我的网站使用 PHP 发送的电子邮件时 我想在用户收件箱中显示个人资料图片 在这张图片中 第一封电子邮件来自我的网站 第二封电子邮件是我想要的 这是我的 PHP 邮件函数 emailTo POST emialNewPass em
  • 如何在 Python 中按字母数字顺序获取下一个字符串?

    我需要一个简单的程序 给定一个字符串 按字母数字顺序 或仅按字母顺序 返回下一个字符串 f aaa aab f aaZ aba 等等 其中一个模块中是否已经有此功能 我认为没有内置函数可以做到这一点 以下应该有效 def next stri
  • 如何使用属性 server.port=0 运行 spock 测试时查找 Spring Boot 容器的端口

    鉴于此条目application properties server port 0 这会导致 Spring Boot 选择一个随机可用端口 并使用 spock 测试 Spring Boot Web 应用程序 spock 代码如何知道要访问哪
  • 如何从 android 调用 .NET Web 服务? [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我需要使用如下 URL 调用 Web 服务 http 192 168 1 19 Test
  • 将 Spring Cloud Gateway 与 oauth2 一起使用

    我在使用 Spring Cloud Gateway 时遇到问题 是否有任何依赖项直接或递归调用 spring boot starter tomcat 它不会工作 因为它将启动嵌入式 tomcat 服务器而不是 Spring Cloud Ga
  • 如何在 Swift 中按属性值对自定义对象数组进行排序

    假设我们有一个名为的自定义类imageFile这个类包含两个属性 class imageFile var fileName String var fileID Int 其中很多都存储在数组中 var images Array var aIm
  • 如何使用 LWP::UserAgent 接受自签名证书

    我正在尝试设置一个使用 HTTPS 的 node js 服务器 然后 我将用 Perl 编写一个脚本 向服务器发出 HTTPS 请求并测量往返延迟 这是我的node js var express require express var ht
  • 将 HttpPostedFileBase 转换为 byte[]

    在我的 MVC 应用程序中 我使用以下代码来上传文件 MODEL public HttpPostedFileBase File get set VIEW Html TextBoxFor m gt m File new type file 一
  • 如何在 Gnome Shell 中设置应用程序标题?

    我是 Gtk 开发的新手 正在尝试使用 PyGObject 和 Gtk 3 0 编写一个应用程序 然而 当我从命令行在 Gnome Shell 中运行应用程序时 出现在左上角 紧邻 活动 热角右侧 的应用程序名称仅设置为 Python 源文
  • 在 Google 地图上制作可点击的多边形(适用于 Android)

    我有一个城市各个区域的连续纬度 有什么方法可以用它创建可点击的多边形吗 一次可行的方法是 使用可用的 LatLngs 生成多边形 我想用颜色编码在地图上直观地显示多边形 Set up setOnMapClickListener 做多边形内的
  • 如何使用打字稿文件运行 gulp

    有一个使用 gulp js 文件的 gulp 项目 但我的项目是用 typescript 编写的 所以我宁愿有一个用 typescript 编写的 gulp 文件 可以将这个过程分为两个步骤 其中我 1 手动将typescript gulp
  • 第一次使用 SpriteKit 播放声音时出现轻微延迟

    当我使用 self playSoundFileNamed 播放声音时 第一次播放声音时会有一点延迟 整个应用程序冻结大约半秒 但之后就没问题了 我怎样才能摆脱这个 在我的游戏设置方法中 我做了类似的事情 看起来效果很好 拥有 iVar SK
  • 解压缩和 * 运算符[重复]

    这个问题在这里已经有答案了 python 文档将此代码提供为 zip 的逆操作 gt gt gt x2 y2 zip zipped 尤其 zip 与 运算符结合使用可用于解压缩列表 有人可以向我解释 运算符在这种情况下如何工作吗 据我了解
  • 如何在Android Studio项目中使用最新的FFMPEG?

    I have a simple task to make a video from multiple images and an audio file After searching a lot found that its possibl
  • 显示动画 GIF

    我想在我的应用程序中显示动画 GIF 图像 我发现 Android 本身并不支持动画 GIF 但是它可以使用显示动画动画绘图 开发 gt 指南 gt 图像和图形 gt 可绘制对象概述 该示例使用在应用程序资源中保存为帧的动画 但我需要的是直
  • 在 C# 中创建气球工具提示

    我可以知道如何在用 C 编码的应用程序中制作弹出气泡消息吗 例如 当我启动我的应用程序时 它会弹出 欢迎使用 UbuntuSE 应用程序 是的 弹出窗口不是消息框弹出窗口 而是托盘菜单中的弹出窗口 与此类似的东西 附言 如果我没记错的话 这
  • 使用 TypeScript 和注入的 AngularJS 过滤器

    有人可以给我提供一个示例 说明如何在 TypeScript 中创建使用依赖注入的 Angular 过滤器 底部是我目前拥有的 工作正常 但我想做的是我想要访问 filter 的函数 以便我可以将 return date ToString 行