2014-10-30 31 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 --> 

就這麼簡單。

祝你好運。