Javascript 如何使用AngularJs创建多重搜索

Javascript 如何使用AngularJs创建多重搜索,javascript,angularjs,json,Javascript,Angularjs,Json,如果我想找到这样的组合位置+国籍,我应该怎么做,如果我输入例如英格兰 <section ng-controller="searchController"> <input class="field" ng-model="searchField"> <div id="update"> <ul>

如果我想找到这样的组合位置+国籍,我应该怎么做,如果我输入例如英格兰

<section ng-controller="searchController">
                    <input class="field" ng-model="searchField">
                    <div id="update">
                        <ul>
                            <li ng-repeat="item in players | filter: searchField | orderBy: playersOrder">
                                <p class="name">{{item.name}}</p>
                                <p>{{item.position}}</p>
                                <p>{{item.jerseyNumber}}</p>
                                <p>{{item.dateOfBirth}}</p>
                                <p>{{item.nationality}}</p>
                                <p>{{item.contractUntil}}</p>
                                <p>{{item.marketValue}}</p>
                            </li>
                        </ul>
                    </div>
                </section>

var myApp = angular.module("myApp", []);

myApp.controller("searchController", function($scope, $http) {
    $http.get("scripts/players.json").success(function(data) {
        $scope.players = data;
        $scope.playersOrder = 'name';
    });
});

  • {{item.name}

    {{item.position}

    {{item.jerseyNumber}

    {{item.dateOfBirth}

    {{项目.国籍}

    {{item.contractUntil}

    {{item.marketValue}

var myApp=angular.module(“myApp”,[]); 控制器(“searchController”,函数($scope,$http){ $http.get(“scripts/players.json”).success(函数(数据){ $scope.players=数据; $scope.playerOrder='name'; }); });
json文件: 球员 {
“id”:2138, “姓名”:“Thibaut Courtois”, “职位”:“守门员”, “运动衫编号”:13, “出生日期”:“1992-05-11”, “国籍”:“比利时” }, {
“id”:2140, “姓名”:“贾马尔·布莱克曼”, “职位”:“守门员”, “运动衫编号”:27, “出生日期”:“1993-10-27”, “国籍”:“英国”
},

在AngularJS中,您可以创建一个函数:

angular
.module('myApp',[])
.controller('searchController',函数($scope){
//json响应
$scope.players=[{“id”:2138,“姓名”:“Thibaut Courtois”,“职位”:“守门员”,“球衣号码”:13,“出生日期”:“1992-05-11”,“国籍”:“比利时”},{“id”:2140,“姓名”:“Jamal Blackman”,“职位”:“守门员”,“球衣号码”:27,“出生日期”:“1993-10-27”,“国籍”:“英格兰”};
$scope.playerOrder='name';
$scope.searchField='';
$scope.myFileterFunction=函数(行){
var query=angular.lowercase($scope.searchField);
if(query.indexOf(“”)){
var query_array=query.split(“”);
var搜索结果=false;
for(查询数组中的变量x){
query=query_数组[x];
搜索结果=(angular.lowercase(row.position).indexOf(query | |“”)!=-1
||angular.小写(row.national).indexOf(查询| |“”)!=-1)
真的吗
:假;
}
返回搜索结果;
}
return(angular.lowercase(row.position).indexOf(query | |“”)!=-1
||angular.lowercase(row.national).indexOf(查询| |“”)!=-1;
}
});

  • {{item.name}

    {{item.position}

    {{项目.国籍}


创建一个过滤函数
filterBy
,该函数将在播放器的
项目中包含
项目
对象

<li ng-repeat="item in players | filter: filterBy | orderBy: playersOrder">
 ...
</li>

@Dima Vleskov您可以通过创建自定义过滤器来滚动自己的过滤器

angular
.模块('euro2016',[])
.controller('DefaultController',DefaultController)
.filter('searchPlayer',searchPlayer);
函数DefaultController(){
var vm=这个;
vm.players=玩家;
}
searchPlayer.$inject=['$filter'];
函数searchPlayer($filter){
返回函数(数据、参数){
if(角度isArray(数据)和角度isDefined(参数)){
变量参数=参数拆分(“”);
如果(角度已定义(参数)&¶ms.length==2){
var searchTerm={
位置:参数[0],
国籍:params[1]
};
var players=$filter('filter')(数据,搜索术语);
返回球员;
}
}
返回数据;
}
}
var玩家=[
{id:1,姓名:'Jack Butland',位置:'Keeper',国籍:'England',img:'http://www.telegraph.co.uk/content/dam/football/2016/01/25/butland_3548459k-large_trans++qvzuuqpfflyliwib6ntmjwfsvwez_vEN7c6bHu2jJnT8.jpg'},
{id:2,姓名:'Thibaut Courtois',职位:'Keeper',国籍:'Belgium',img:'http://www.telegraph.co.uk/content/dam/football/2016/01/25/Thibaut_Courtois_3138923k-large_trans++qvzuuqpfflyliwib6ntmjwfsvwez_vEN7c6bHu2jJnT8.jpg'},
{id:3,姓名:'Marc Andre ter Stegen',位置:'Keeper',国籍:'Germany',img:'http://www.telegraph.co.uk/content/dam/football/2016/01/25/ter-stegen_3548100k-large_trans++qvzuuqpfflyliwib6ntmjwfsvwez_vEN7c6bHu2jJnT8.jpg'},
{id:4,姓名:'Joe Hart',位置:'Keeper',国籍:'England',img:'http://www.telegraph.co.uk/content/dam/football/2016/01/25/Joe_Hart_3138807k-large_trans++qvzuuqpfflyliwib6ntmjwfsvwez_vEN7c6bHu2jJnT8.jpg'}
];

搜寻
{{player.name}{{player.national}
$scope.filterBy = function (item) {
 return item.name.toLowerCase().indexOf($scope.searchField.toLowerCase()) != -1 || 
        item.nationality.toLowerCase().indexOf($scope.searchField.toLowerCase()) != -1
 };