我有一个指令需要在代码中使用angular的$ filter。但是,在尝试使用它时,我收到了一个错误:
[$injector:unpr] Unknown provider: FilterProvider <- Filter
以下是导致错误的最小示例:http://jsfiddle.net/5tLtj3nh/
我很难过,想弄清楚我做错了什么。
答案 0 :(得分:5)
您错误地使用了$filter
服务。
您必须首先从$filter
服务获取过滤器:
var filterFilter = $filter('filter');
filterFilter([], 'query');
或一个班轮:
$filter('filter')([], 'query');
如果您感到困惑,'filter'
过滤器是angularjs的内置过滤器之一。
还有更多内容,请参阅:https://docs.angularjs.org/api/ng/filter
提示:您还可以注入一个单独的过滤器,如下所示:
app.directive('testDirective', ['filterFilter', function(filterFilter) {
return {
restrict: 'E',
template: '<div>testDirective</div>',
link: function(scope, elem, attrs) {
filterFilter([], 'query');
}
}
}]);
答案 1 :(得分:1)
如评论中所述,您的语法错误。要根据documentation使用filter
$filter
语法:
$filter('filter')(array, expression, comparator)
假设您要根据您需要的query
字符串进行过滤:
$filter('filter')([], 'query')
答案 2 :(得分:1)
用于工作的plnkr
http://plnkr.co/edit/US6xE4h0gD5CEYV0aMDf?p=preview
检查角度环境的设置方式。 按照步骤:
检查您的Index.html是否已加载脚本。
<script src="scripts/angular-filter.js"></script>
检查控制器中是否使用了$ filter
(function () {
'use strict';
var controllerId = 'controllerName';
angular.module('myApp')
.controller(controllerId, ['$rootScope', '$scope', '$timeout', 'security', '$filter', functionName]);
function functionName($rootScope, $scope, $timeout, security, $filter) {
// your controller code.
}})();
您的html页面正在使用FilterBy
<tr ng-repeat="row in tableList | filterBy: ['col1','col2','col3'] : vm.listFilter">
<td class="text-left">{{row.col1}}</td>
<td class="text-left">{{row.col2}}</td>
<td class="text-left">{{row.col3}}</td>
</tr>
加载角度
时不要忘记包含依赖项 var app = angular.module('app', [
'common', // These are just example, can be anything
'common.bootstrap',
'security',
'nsPopover', 'angular.filter'
]);