当前位置: 首页 > 面试题库 >

如何扩展或覆盖angularjs中的现有过滤器?

锺威
2023-03-14
问题内容

是否有可能扩展现有的“标准”过滤器(datenumberlowercase等)?在我的情况下,我需要从YYYYMMDDhhmmss格式解析日期,因此我想扩展(或覆盖)date过滤器,而不是编写自己的过滤器。


问题答案:

我不确定我是否正确理解了您的问题,但是如果您想扩展现有过滤器的功能,则可以创建一个装饰现有过滤器的新过滤器。例:

myApp.filter('customDate', function($filter) {
    var standardDateFilterFn = $filter('date');
    return function(dateToFormat) {
     return 'prefix ' + standardDateFilterFn(dateToFormat, 'yyyyMMddhhmmss');
    };
});

然后,在您的模板中:

{{now | customDate}}

上面已经说了,如果您只是想根据给定的格式格式化日期,可以使用现有的日期过滤器来完成:

{{now | date:'yyyyMMddhhmmss'}}

这是说明两种技术的有效jsFiddle:http
:
//jsfiddle.net/pkozlowski_opensource/zVdJd/2/

请注意,如果未指定格式,AngularJS将假定它是“中等”格式(确切的格式取决于语言环境)。检查http://docs.angularjs.org/api/ng.filter:date了解更多信息。

最后一句话:我对您的问题的“解析来源”部分感到困惑。事实是,过滤器用于将对象(在这种情况下为日期)解析为字符串,而不是相反。如果要解析表示日期的字符串(来自输入),则必须查看NgModelController#$
parsers(检查http://docs.angularjs.org/guide/forms中的“自定义验证”部分)。



 类似资料:
  • 问题内容: 我正在尝试使用Swift协议扩展,却发现这种行为令人困惑。您能帮我得到我想要的结果吗? 请参阅代码最后4行的注释。(如果需要,可以将其复制粘贴到Xcode7游乐场)。谢谢!! 问题答案: 简短的答案是协议扩展不执行类多态性。这是有一定道理的,因为协议可以被结构或枚举采用,并且因为我们不希望仅在没有必要的地方采用协议来引入动态调度。 因此,在中,实例变量(可能更准确地写为)并不意味着您认

  • 问题内容: 如果我上课: 我最初以为我可以通过添加扩展名来覆盖子类而无需子类化: 该代码不会编译,但错误说明了该函数,这很有意义。 我的问题是: 是否仍要重写特定类的功能?换句话说,在某些情况下,例如上面的示例中,我可以替换功能吗?如果没有,是否有其他解决方法或方法来实现该行为(可能声明了另一个协议,idk) 现在,我考虑得更多了,我不得不说这是不可能的,因为是什么阻止某人重写任何标准库函数? 问

  • 我试图在某个页面上以不同的方式定位此组件。但是,当我为它提供另一个className属性时,它只使用声明组件时提供的原始类的样式。 组成部分: 我想以不同的方式定位的页面: 通常情况下,我会使用自定义样式进行此操作,但我必须使用媒体查询,因此在这种情况下,这是不可能的。

  • 我必须在Visual Studio Code扩展中实现一个非常典型的编程模式:将一些东西保存到文件中,但是在这样做之前检查目标文件是否存在,并询问用户是否可以覆盖它,如果可以的话。 通常我会打开一个文件保存对话框,要求用户给我一个文件名,这个对话框会进行所有必要的检查,并在必要时得到用户的确认。然而,在vscode中,我们没有文件保存对话框(但是有一个特性请求)。所以我试图用我们有限的手段来实现这

  • 问题内容: 我想覆盖指令ng-click:在每次执行ng-click之前进行一些$ rootscope更改。怎么做? 问题答案: 您不能覆盖AngularJS内置指令。但是,您可以定义多个具有相同名称的指令,并使它们针对同一元素执行。通过为指令分配适当的值,您可以控制指令在内置指令之前还是之后运行。 该插件显示了如何构建在内置指令执行之前执行的指令。该代码也显示在下面。单击链接时,自定义将首先运行

  • 问题内容: 如何覆盖管理模板(例如admin / index.html),同时扩展它(请参阅https://docs.djangoproject.com/en/dev/ref/contrib/admin/#overriding-vs-replacing -an-admin-template)? 首先-我知道这个问题已经被问过并回答过(请参阅Django:覆盖和扩展应用程序模板),但是正如答案所示,