gpt4 book ai didi

javascript - 自定义过滤器出现问题,我缺少什么?

转载 作者:行者123 更新时间:2023-12-03 10:51:06 25 4
gpt4 key购买 nike

我正在处理的自定义过滤器有问题,我正在为此苦苦挣扎,因为我使用的是 Angular 1.3.6,现在无法升级,所以在这种情况下我真的需要您的帮助。

see this Plnkr

如果您输入1H,过滤器会返回包含这些字符的所有联赛,这非常棒,但是,如果您输入...假设:College,过滤器返回以 College 开头的所有 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;
});
});
};
});

sportsLeagues.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 - 自定义过滤器出现问题,我缺少什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28415602/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com