簡體   English   中英

將自定義過濾器注入服務時的“未知提供者”

[英]“Unknown Provider” when injecting custom filter into service

我正在嘗試使用自定義過濾器過濾搜索應用程序的結果。 現在,角度文檔指出您應該避免定義有狀態過濾器。 我的解決方法是構建一個處理過濾器輸入的服務和將這些輸入作為參數對象的自定義過濾器。

當我有一個實現在服務中使用自定義過濾功能執行此操作時,此概念運行良好。 現在,我將其移至過濾器聲明,如下所示:

referenceFilter.filter.js

(function () {
'use strict';

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

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

現在,當我嘗試將過濾器注入到服務中時,出現“未知提供程序”錯誤,指出它無法為我的referenceFilter找到提供程序。 雖然我認為它已正確注入並在服務之前定義。

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>

我究竟做錯了什么?

您不應直接注入過濾器,而應使用內置的$filter服務:

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM