2014-10-30 56 views
2

一个输入模型过滤多个物业说我们有过滤器由两个属性数据的搜索输入:姓名和身份证如何能够基于angularjs

<input ng-model="query.name"> 
<input ng-model="query.id"> 

<div ng-repeat="item in items | filter:query"></div> 

我怎样才能在一个简单的输入做到这一点NG-提前

+1

你可以编写一个自定义过滤器 – akonsu 2014-10-30 04:13:02

回答

1

真不简单,你几乎有:

<input ng-model="query"> 
<div ng-repeat="item in items | filter:query">{{item}}</div> 

这样,你只有一个NG模型进行筛选。

-
编辑:

如果你在你的对象更多的属性不希望被过滤,你可以使用一个功能自定义过滤器,从documentation

{{ filter_expression | filter : expression : comparator}}
Expression可以是:stringObjectfunction()

我已经更新了小提琴演示如何同时使用功能自定义过滤器过滤fiddle

+0

感谢您编写示例,但是如果有其他无用的属性我不想包含,我稍微更改了示例:http://jsfiddle.net/k9s4Lvs4/1/ – jiananshi 2014-10-30 05:17:17

+0

@klamtlne,我已编辑我的答案是为这个问题添加一个新的小提琴。 – denisazevedo 2014-10-30 13:55:33

1

还没有尝试过模拟

谢谢,但它看起来像从文档在 https://docs.angularjs.org/api/ng/filter/filter ,你可以做这样的事情:

<input ng-model="query.$"> 

请参阅页面上的最后一个示例以及讨论过滤器的“表达式”参数的“对象”版本的部分。

+0

这是这个例子的gr8解析,但现实生活中,有一些无用的属性,这也将包括这种方式。 – jiananshi 2014-10-30 05:15:05

1

您可以使用angular-filter轻松解决此问题。

https://github.com/a8m/angular-filter

控制器

$scope.users = [ 
    { first_name: 'Sharon', last_name: 'Melendez' }, 
    { first_name: 'Edmundo', last_name: 'Hepler' }, 
    { first_name: 'Marsha', last_name: 'Letourneau' } 
]; 

HTML

<input ng-model="search" placeholder="search by full name"/> 
<th ng-repeat="user in users | searchField: 'first_name': 'last_name' | filter: search"> 
    {{ user.first_name }} {{ user.last_name }} 
</th> 
<!-- so now you can search by full name --> 

就这么简单。

祝你好运。