一尘不染

在AngularJS中按多个特定模型属性进行过滤(OR关系)

angularjs

在这里看看示例:http :
//docs.angularjs.org/api/ng.filter
filter

您可以使用来按电话的任何属性进行<input ng-model="search">搜索,也可以使用来按名称进行搜索<input ng- model="search.name">,然后按名称对结果进行适当过滤(按预期方式输入电话号码不会返回任何结果)。

比方说,我有一个“名称”属性,“电话”属性,一个“秘密”性质的模型,我怎么会去通过过滤 在“名称”和“电话”属性和 没有
“秘密”属性?因此,从本质上讲,用户可以键入姓名或电话号码,并且ng- repeat可以正确过滤,但是即使用户键入的值等于“秘密”值的一部分,也不会返回任何内容。

谢谢。


阅读 191

收藏
2020-07-04

共1个答案

一尘不染

这是the

新的代码更整洁的代码,查询和搜索列表项都不区分大小写

主要思想是创建一个过滤器功能来实现此目的。

来自官方文件

函数:谓词函数可用于编写任意过滤器。为数组的每个元素调用该函数。最终结果是谓词为其返回true的那些元素的数组。

<input ng-model="query">

<tr ng-repeat="smartphone in smartphones | filter: search ">



$scope.search = function(item) {
    if (!$scope.query || (item.brand.toLowerCase().indexOf($scope.query) != -1) || (item.model.toLowerCase().indexOf($scope.query.toLowerCase()) != -1) ){
        return true;
    }
    return false;
};

更新资料

有些人可能对现实世界中的性能有所顾虑,这是正确的。

在现实世界中,我们可能会从控制器中进行这种过滤。

这是显示如何做的详细信息

简而言之,我们添加ng-change了用于监视新搜索变化的输入

然后触发过滤功能。

2020-07-04