Angularjs 在ng repeat表中搜索(筛选)多个项目的简单方法?安格拉斯
我正试图找到一种简单的方法,通过允许搜索多个内容,使搜索更深入。i、 e.如果我在搜索汽车,而不仅仅是输入Honda,我可以输入Honda,black,2001 这是我当前布局的框架 所以现在,当我在搜索框中输入信息时,它会给我一些信息,这些信息会出现在我的表格中的任何地方,这很好。然而,这通常会产生非常广泛的结果。我试图找到一种方法,允许用户通过多个词过滤来搜索更具体的项目Angularjs 在ng repeat表中搜索(筛选)多个项目的简单方法?安格拉斯,angularjs,search,angularjs-ng-repeat,Angularjs,Search,Angularjs Ng Repeat,我正试图找到一种简单的方法,通过允许搜索多个内容,使搜索更深入。i、 e.如果我在搜索汽车,而不仅仅是输入Honda,我可以输入Honda,black,2001 这是我当前布局的框架 所以现在,当我在搜索框中输入信息时,它会给我一些信息,这些信息会出现在我的表格中的任何地方,这很好。然而,这通常会产生非常广泛的结果。我试图找到一种方法,允许用户通过多个词过滤来搜索更具体的项目 回到汽车的例子,如果我搜索Honda black 2001,这将不会给我任何东西,因为它查找整个字符串Honda bla
回到汽车的例子,如果我搜索Honda black 2001,这将不会给我任何东西,因为它查找整个字符串Honda black 2001,而不是Honda AND black AND 2001,我试图找到一种简单的方法,通过带角度的多个单词进行搜索,比如使用逗号分隔。在Angular中这样做简单吗?我不确定它有多简单,但您可以使用一个过滤器和控制器函数来实现这种类型的过滤 以汽车为例,标记可能类似于:
<input class="form-control" type="text" ng-model="q" placeholder="Search by year, make, model" />
<br/>
<ul>
<li ng-repeat="car in cars | filter:filterCars">{{car.year}} {{car.make}} {{car.model}}</li>
</ul>
这里可能没有介绍一些边缘情况,但您可以理解
工作我不确定它有多简单,但您可以使用一个过滤器和控制器函数来实现这种类型的过滤 以汽车为例,标记可能类似于:
<input class="form-control" type="text" ng-model="q" placeholder="Search by year, make, model" />
<br/>
<ul>
<li ng-repeat="car in cars | filter:filterCars">{{car.year}} {{car.make}} {{car.model}}</li>
</ul>
这里可能没有介绍一些边缘情况,但您可以理解
工作
$scope.cars = [
{
year: 2006,
make: 'BMW',
model: 'M3'
},
{
year: 2006,
make: 'BMW',
model: 'Z4'
},
{
year: 1992,
make: 'Mazda',
model: 'Miata'
},
{
year: 2008,
make: 'BMW',
model: '750'
}
];
var match = function (item, val) {
var regex = new RegExp(val, 'i');
return item.year.toString().search(regex) == 0 ||
item.make.search(regex) == 0 ||
item.model.search(regex) == 0;
};
$scope.filterCars = function(car) {
// No filter, so return everything
if (!$scope.q) return true;
var matched = true;
// Otherwise apply your matching logic
$scope.q.split(' ').forEach(function(token) {
matched = matched && match(car, token);
});
return matched;
};