AngularJS:我可以使用在另一个模块中定义的过滤器吗?

4

我有一个使用按模块类型组织结构的Angular项目:

├── directives
├── services
├── filters
   └── filters.js
└── states
    └── home
        ├── home.html
        └── home.module.js

我在filters.js中创建了一个定制的过滤器。

import angular from "angular";

export default angular.module("app.filters", [])
    .filter("removeStartingWithDollar", function(items) {
        var filteredItems = [];
        angular.forEach(items, function(item) {
            if (!item.startsWith('$')) { filteredItems.push(item);  }
        });
        return filteredItems;
    });

我想在我的home.html模板中使用removeStartingWithDollar过滤器。我该如何将其注入为依赖项,是否需要这样做?

2个回答

4
您需要将该模块添加到您要使用过滤器的模块中,例如,假设您有一个应用程序模块:
angular.module('app', ['app.filters'])

之后您将使用它


2
只需在任何需要使用它的提供者的地方注入app.filters模块即可。
angular.module("MySecondModule", [app.filters])

我的回答被踩了。我相信他无法解释它 ;) - Charlie
可能是因为您注入了一个变量而不是字符串,所以被投下了反对票。另一个答案使用的是字符串。我不会说它是错误的,因为这取决于您在代码的其他部分中有哪些变量,但它肯定会引入一个依赖于该变量在创建时存在的依赖项,而字符串版本则没有这个问题。 - Paul Rooney
设计时依赖。你说得对。我不会编辑我的答案 - 这样,其他人就可以学习两个答案之间的区别。上面的踩应该是踩 + 评论。现在我们有了一些! - Charlie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接