【问题标题】:Create custom Angular filter without app name创建没有应用名称的自定义 Angular 过滤器
【发布时间】:2026-01-06 21:10:01
【问题描述】:

如何创建没有角度应用名称的自定义角度过滤器?

// usual way for creating filter
var app = angular.module('app', []);

app.filter('makeUppercase', function () {
  return function (item) {
      return item.toUpperCase();
  };
});

app.controller('PersonCtrl', function () {
  this.username = 'Todd Motto';
});

我只知道用应用名称创建角度过滤器。

我关心的是我们如何创建一个没有应用名称的过滤器并将其注入控制器。是否可以创建一个javascript函数并将它们传递给控制器​​。

【问题讨论】:

    标签: angularjs angularjs-filter


    【解决方案1】:

    您总是需要将过滤器附加到某个模块,在您的情况下,var app = angular.module('app', []); 是一个模块,而您在该模块中制作了一个过滤器。

    您可以在控制器中使用过滤器,如下所示:

    app.controller('PersonCtrl', function ($filter) {
      this.username = 'Todd Motto';
      var caps = $filter('makeUppercase')("make me caps");//call your filter like this
    });
    

    【讨论】:

    • 1。但是控制器注入了角度模块(应用程序名称)
    【解决方案2】:

    是的,您可以这样做。

    您可以创建一个模块,然后创建一个包含过滤器的服务。

    之后,您可以将新创建​​的模块注入您的模块并使用过滤器。

    要通过服务添加过滤器,您可以阅读此answer

    【讨论】: