自定义过滤器的问题,我缺少什么
Issue with custom filter, what am I missing ?
我正在处理的自定义过滤器有问题,我很难解决这个问题,因为我使用的是Angular 1.3.6,现在无法升级,所以在这种情况下我真的需要你的帮助。
看到这个Plnkr
如果您键入1H,过滤器将返回具有这些字符的所有联赛,这非常棒,但是,如果您键入。。。比方说:学院,过滤器返回以大学开始的所有sports
,但该运动的联赛消失了,我的过滤器对联赛很有效,但如果你试图找到任何运动,他的联赛就会消失,我不希望这样,我希望如果你搜索这些运动,过滤器必须返回每个体育项目及其各自的联赛。
当你在联赛中搜索时,我想保持同样的行为,这现在太棒了,我的问题只是体育。请参阅下方的我的代码
filter.js
.filter('myFilter', function() {
return function(sports, filterBy) {
if (!sports || !filterBy) {
return sports;
}
filterBy = filterBy.toLowerCase();
return sports.filter(function(sport) {
return (sport.name.toLowerCase().indexOf(filterBy) > -1) || sport.leagues.some(function(league) {
return league.name.toLowerCase().indexOf(filterBy) > -1;
});
});
};
});
体育联盟.html
<div ng-repeat="sport in sportsFilter = (sports | myFilter:query)">
<strong>{{sport.name}}</strong>
<div ng-repeat="league in sport.leagues | filter: { name:query }">
<div>{{league.name}} </div>
</div>
</div>
为联赛制作另一个过滤器,如果其运动名称包含查询,则会返回所有联赛,否则会正常过滤:
myApp.filter('leaguesFilter', function () {
return function (leagues, filterBy) {
if (!leagues || !filterBy) return leagues;
filterBy = filterBy.toLowerCase();
if (leagues[0] && leagues[0].sport.name.toLowerCase().indexOf(filterBy) > -1) return leagues;
else return leagues.filter(function (league) {
return league.name.toLowerCase().indexOf(filterBy) > -1;
});
};
});
演示:http://plnkr.co/edit/0vYKtBETxDx1tD3udO9Z?p=preview
相关文章:
- 这是什么 ==- javascript 运算符
- 我的单元测试选项是什么
- 全局变量和全局对象的属性之间有什么区别吗
- 打破承诺链的好方法是什么
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- Javascript中的空白是什么
- 为什么我的d3.jsselectAll+过滤器没有过滤
- Angularjs-utils高亮过滤器在搜索时破坏应用程序
- 是什么让一个“;Uncaught RangeError:超过了最大调用堆栈大小“;错误(Chrome,在其他浏览器中显示
- 在ember/handlers中使用value和valueBinding有什么区别
- Angular-表的多列过滤器
- 使用过滤器映射多点数据集的最佳方法是什么
- JavaScript's数组过滤器函数在没有分配函数的情况下使用-这里发生了什么
- 自定义过滤器的问题,我缺少什么
- 当添加一个服务和一个过滤器或多个服务时,我在做什么导致未知提供者
- youTube Analytics API中多个过滤器的正确javascript语法是什么
- Dojo DataGrid过滤器使用AndOrReadStore-我做错了什么?.
- Gulp网络服务器,什么是过滤器
- 实现多个过滤器的最佳方式是什么?
- 我正在使用Angular";日期";过滤器,但是这个数字表达式是什么