Javascript 自定义筛选器Ionic/AngularJS的未知提供程序
我正在尝试实现自定义筛选器,但出现以下错误: 错误:[$injector:unpr]未知提供程序:removeCharsFilterProviderJavascript 自定义筛选器Ionic/AngularJS的未知提供程序,javascript,angularjs,filter,ionic,Javascript,Angularjs,Filter,Ionic,我正在尝试实现自定义筛选器,但出现以下错误: 错误:[$injector:unpr]未知提供程序:removeCharsFilterProvider 我不知道为什么会这样,据我所知,这应该是可行的。你能看到我缺少的东西吗?首先,你不需要在控制器中插入过滤器,它们是主应用程序的一部分,可以在任何控制器中使用$filter服务 过滤器不是独立的单例对象,因此不需要 包含为依赖项 由于您已将其添加到控制器中,因此它正在寻找服务或工厂,这些服务或工厂是单例的,因此需要注入。但在你的情况下,你有一个过滤
我不知道为什么会这样,据我所知,这应该是可行的。你能看到我缺少的东西吗?首先,你不需要在控制器中插入过滤器,它们是主应用程序的一部分,可以在任何控制器中使用
$filter
服务
过滤器不是独立的单例对象,因此不需要
包含为依赖项
由于您已将其添加到控制器中,因此它正在寻找服务或工厂,这些服务或工厂是单例的,因此需要注入。但在你的情况下,你有一个过滤器,而不是服务
首先从控制器中移除removeChars
。它给你$injector error,因为它正在寻找不存在的服务或工厂。如果要在控制器中使用过滤器,请使用bleow方式
app.controller('myController', ['$scope', '$filter',
function($scope, $filter) {
//use it like below if you want to perform filters on data in controller
$scope.someData = $filter('removeChars')(data);
}
]);
如果您想在视图中使用过滤器,无需管理其依赖关系,请像您使用的方式一样直接在视图中使用
所以结论是,
希望这有帮助 出现此错误是因为您以错误的方式使用$injector, 当您需要从视图外部筛选时,必须在依赖项上附加筛选后缀,这会告诉$injector您需要筛选
angular.module('test', []).controller('TestCtrl', function(dateFilter) { console.log('DateFilter is', dateFilter); });
另一种$injecta过滤器的方法,如前面的注释所述,是向$filter服务请求过滤器 是否尝试将筛选器添加到app.js文件中的依赖项?像这样:var-app=angular.module('myApp',['ionic','removeChars'])@Daedalus非常好地发现了!然而,在修复后,我仍然得到相同的错误…@FurkanBasaran,这也不起作用…一切看起来都很好。你能创建一个plunker吗?
app.filter('removeChars', function() {
return function(input) {
return input.replace(/-/g, '').replace(/>/g, '');
};
});
<div ng-controller="myController">
<p>{{person.name | removeChars}}</p>
</div>
<!-- your app's js -->
<script src="js/app.js"></script>
<!-- filters -->
<script src="js/filters/removeCharsFilter.js"></script>
<!-- controllers -->
<script src="js/controllers/myController.js"></script>
app.controller('myController', ['$scope', '$filter',
function($scope, $filter) {
//use it like below if you want to perform filters on data in controller
$scope.someData = $filter('removeChars')(data);
}
]);
angular.module('test', []).controller('TestCtrl', function(dateFilter) { console.log('DateFilter is', dateFilter); });