Javascript 基于角度中的多个值过滤ng重复
这很难说清楚,但: 我有一个名为Javascript 基于角度中的多个值过滤ng重复,javascript,angularjs,Javascript,Angularjs,这很难说清楚,但: 我有一个名为users 每个用户都有3个属性:id、name、skill { _id: 1, name: 'frank young', skill: 'java' }, 我有一张表格,在按enter键时收集搜索结果 <form ng-submit="pushToNewArry(searchTerm)"> <input type="text" ng-model="searchTerm"
users
每个用户都有3个属性:
id、name、skill
{
_id: 1,
name: 'frank young',
skill: 'java'
},
我有一张表格,在按enter键时收集搜索结果
<form ng-submit="pushToNewArry(searchTerm)">
<input type="text" ng-model="searchTerm" />
<input type="submit">
</form>
问题:
如何创建一个过滤器,该过滤器将运行多个搜索词,并根据用户
集合与输入值创建一个适当匹配的列表
<ol ng-repeat = "user in users | filter: trackedUsers">
<li class="names"><span>{{$index}}. </span>{{user.name}}</li>
<li class="skills">{{user.skill}}</li>
</ol>
{{$index}。{{user.name}
{{user.skill}}
提交后,将保存用户输入,并根据输入的搜索值创建一个新的用户数组。因此,需要多个匹配值
更新:
不一定和上面的例子一样,因为我一直在玩它。你的意思是喜欢
更新
更新
{{listSearchTerms | json}
{{$index}。{{user.name}
{{user.skill}}
Javascript
var app = angular.module('app', []);
//App.directive('myDirective', function() {});
//App.factory('myService', function() {});
app.controller('MainCtrl', function ($scope) {
$scope.users = [
{
_id: 1,
name: 'frank young',
skill: 'java'
},
{
name: 'jeff qua',
skill: 'javascript'
},
{
name: 'frank yang',
skill: 'python'
},
{
name: 'ethan nam',
skill: 'python'
},
{
name: 'ethan nam',
skill: 'javascript'
},
];
$scope.searchTerm = "";
$scope.listSearchTerms = [];
$scope.filterSearch = function (terms) {
return function (item) {
return terms.length < 1 ? true :
terms.reduce(function (lastresult, term) {
return lastresult + (item.name.indexOf(term) > -1 || item.skill.indexOf(term) > -1);
}, 0) > 0;
}
};
$scope.saveSearchTerm = function () {
$scope.listSearchTerms.push($scope.searchTerm);
$scope.searchTerm = "";
}
});
var-app=angular.module('app',[]);
//App.directive('myDirective',function(){});
//App.factory('myService',function(){});
应用程序控制器('MainCtrl',函数($scope){
$scope.users=[
{
_id:1,
姓名:'弗兰克·杨',
技能:“java”
},
{
姓名:“jeff qua”,
技能:“javascript”
},
{
姓名:'弗兰克杨',
技能:“巨蟒”
},
{
姓名:“ethan nam”,
技能:“巨蟒”
},
{
姓名:“ethan nam”,
技能:“javascript”
},
];
$scope.searchTerm=“”;
$scope.listSearchTerms=[];
$scope.filterSearch=函数(术语){
返回函数(项目){
返回期限。长度<1?正确:
terms.reduce(函数(lastresult,term){
返回lastresult+(item.name.indexOf(term)>-1 | | item.skill.indexOf(term)>-1);
}, 0) > 0;
}
};
$scope.saveSearchTerm=函数(){
$scope.listSearchTerms.push($scope.searchTerm);
$scope.searchTerm=“”;
}
});
请详细说明您的意思:根据用户集合与输入值创建一个适当匹配的列表。
是的,但我希望将其视为堆栈中的标记。当您添加它们时,它们将固定到查询中。也就是说,如果我输入javascript并按enter键:它将始终显示了解javascript的人。然后,如果我输入frank并输入enter:它将显示所有了解javascript的人和所有名为frank.Dang wayne super close的人!但是,第二个输入是否可以从原始用户集合中筛选,而不是筛选数组的筛选器。本质上,如果一个人向listSearchTerms提交“python”和“jeff”。结果将返回3个人:jeff qua(javascript)、frank yang(python)、ethan nam(python)。最后,非常感谢你的帮助,你是一个摇滚明星。
<div>{{listSearchTerms | json}}</div>
<form ng-submit="saveSearchTerm()">
<input type="text" ng-model="searchTerm" />
<input type="submit">
</form>
<ol ng-repeat = "user in users | filter:filterSearch(searchTerm)">
<li class="names"><span>{{$index}}. </span>{{user.name}}</li>
<li class="skills">{{user.skill}}</li>
</ol>
var app = angular.module('app', []);
//App.directive('myDirective', function() {});
//App.factory('myService', function() {});
app.controller('MainCtrl', function ($scope) {
$scope.users = [
{
_id: 1,
name: 'frank young',
skill: 'java'
},
{
name: 'jeff qua',
skill: 'javascript'
},
{
name: 'frank yang',
skill: 'python'
},
{
name: 'ethan nam',
skill: 'python'
},
{
name: 'ethan nam',
skill: 'javascript'
},
];
$scope.searchTerm = "";
$scope.listSearchTerms = [];
$scope.filterSearch = function (terms) {
return function (item) {
return terms.length < 1 ? true :
terms.reduce(function (lastresult, term) {
return lastresult + (item.name.indexOf(term) > -1 || item.skill.indexOf(term) > -1);
}, 0) > 0;
}
};
$scope.saveSearchTerm = function () {
$scope.listSearchTerms.push($scope.searchTerm);
$scope.searchTerm = "";
}
});