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
};