2015-06-22 55 views
1

从我从官方文档中的角度js过滤器API中学到的东西,我已经看到类似这样的东西。在angularjs中过滤多个值(来自输入部分)

<label>Any: <input ng-model="search.$"></label> <br> 
 
<label>Name only <input ng-model="search.name"></label><br> 
 
<label>Phone only <input ng-model="search.phone"></label><br> 
 
<label>Address only <input ng-model="search.address"></label><br> 
 

 
<ul> 
 
    <li ng-repeat="contact in contacts | filter:search> 
 
     {{contact.name}}, {{contact.phone}}... 
 
    </li> 
 
</ul>

现在,假设我想补充一个新的输入,其中用户只能仅搜索姓名和电话,并保留先前输入的搜索,我该怎么办。意味着实施后,我会有五个搜索输入,用户可以通过任何名称,仅名称,仅电话,仅地址或姓名或电话进行搜索。这五个搜索输入必须可见且可供用户使用,且不能禁用。

请忽略这样做是否合乎逻辑,并假定它是一个明确的要求。

我希望这样的事情,但它不会工作

<label>Any: <input ng-model="search.$"></label> <br> 
 
    <label>Name only <input ng-model="search.name"></label><br> 
 
    <label>Phone only <input ng-model="search.phone"></label><br> 
 
    <label>Address only <input ng-model="search.address"></label><br> 
 
    <label>Name or phone only <input ng-model="search.name || search.phone"></label><br> 
 

 
    <ul> 
 
     <li ng-repeat="contact in contacts | filter:search> 
 
      {{contact.name}}, {{contact.phone}}... 
 
     </li> 
 
    </ul>

回答

0

如果你的过滤器上搜索,你可以创建搜索的姓名或电话输入一个新的属性我想呢?所以你可以这样做:

<label>Name or phone only <input ng-model="search.nameOrPhone"></label> 

或者它是否必须是search.name/search.phone? 根据输入实现对search.name/search.phone的赋值是非常狡猾的,但它可以完成。我想你可以创建一个ng-change函数,它用reg-ex检查输入,然后分配search.name或search.phone。