javascript - "Unknown Provider"将自定义过滤器注入(inject)服务时

标签 javascript angularjs filter dependency-injection angularjs-filter

我正在尝试使用自定义过滤器来过滤搜索应用程序的结果。现在, Angular 文档指出您应该避免定义有状态过滤器。我的解决方法是构建一个处理过滤器输入和自定义过滤器的服务,该服务将这些输入作为参数对象。

这个概念工作得很好,而我有一个实现,它只是在具有自定义过滤功能的服务中执行此操作。 现在我将其移至过滤器声明,如下所示:

referenceFilter.filter.js

(function () {
'use strict';

angular.module('searchApp.search')
    .filter('referenceFilter', function () {
        return function (references, filterModel) {

            var filteredReferences = [];
            /* filtering */
            return filteredReferences;
        }
    });
})();

现在,当我尝试将过滤器注入(inject)到我的服务中时,我收到“未知提供程序”错误,指出它无法找到我的引用过滤器的提供程序。 尽管我认为它在服务之前正确注入(inject)并定义。

referenceFilter.service.js

(function () {
    'use strict';

    angular.module('searchApp.search')
        .factory('referenceFilterService', ['referenceFilter', referenceFilterService]);

    function referenceFilterService(referenceFilter) { // 'reference' | 'referenceFilter' doesnt make a difference
              ....
              /* filter call */
              function getFilteredReferences(references) {
                    return referenceFilter(references, filterModel);
              }
              ....
    }

})();

包含在index.html中

<script src="search/search.module.js"></script>
<script src="search/filter/referenceFilter.filter.js"></script>
<script src="search/filter/referenceFilter.service.js"></script>

我做错了什么?

最佳答案

您不应直接注入(inject)过滤器,而应使用内置的 $filter 服务:

angular.module('searchApp.search')
    .factory('referenceFilterService', ['$filter', referenceFilterService]);

function referenceFilterService($filter) {
    var referenceFilter = $filter('referenceFilter');
    // etc.

关于javascript - "Unknown Provider"将自定义过滤器注入(inject)服务时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32758796/

相关文章:

javascript - 如何在选择框中设置只读 false 以及当选择复选框时,它将是可编辑的。在我的 jquery 代码中禁用不起作用

javascript - 如何在img标签中使用key属性?

javascript - AngularJS 意外地在 textarea 中留下换行符

c - 从C中的字符串中过滤出一个字符

javascript - 如何在 Linux 中使用 electro-packager 创建自定义图标?

javascript - 当它已经有子元素时防止放置事件?拖放

javascript - IE 将字符串转换为日期时删除 4 小时表格日期

javascript - Angularjs:如何根据数据属性值查找元素?

c++ - 从转码示例中使用时缩放过滤器崩溃并出现错误

javascript - 日期范围过滤器不起作用