我有一个自定义过滤器,可根据用户输入过滤项目名称列表
.filter('searchFor', function () {
return function (arr, searchText) {
var result = [];
debugger
if (!arr || !arr.length) {
return;
}
if (!searchText) {
return arr;
}
......
return result;
}
})
我在我的视图中使用如下:
<ion-item ng-repeat="item in items | searchFor:searchText">
<div ng-click="DisplayItem(item.id)">
....
问题是,当我尝试触发DisplayItem
功能或甚至点击后退按钮(均使用ng-Click)时,searchFor
过滤器被触发且ng-Click功能没有工作。
如果我用这样的过滤器替换searchFor
:
<ion-item ng-repeat="item in items | filter:searchText">
然后ng-Click有效,但我无法使用自定义过滤器。
为什么会这样?
答案 0 :(得分:0)
filter函数应该是一个纯函数,这意味着它应该总是在给定相同输入参数的情况下返回相同的结果,并且不应该影响外部状态。
尝试按照它将获得应用过滤器的数组输入的新副本。
.filter('searchFor', function () {
return function (arr, searchText) {
var result = [];
if (!arr || !arr.length) {
return;
}
if (!searchText) {
return [];
}
angular.forEach(arr, function(item) {
//your filtering logic should come here
result.push(item);
});
return result;
}
查看有关Custom filters
的更多详情