角度过滤器由多个属性组成

时间:2016-01-04 08:49:25

标签: javascript angularjs filter

我有一个ng-repeat元素

我的单个元素包含一些属性

{
name: 'full name',
email: 'aaa@bbb.cc',
partner_name: 'partner'
}

我想要一个搜索所有字段的搜索。 用户可以键入电子邮件或合作伙伴名称或名称。

我的代码:

    <div class="row">
<div class="col-xs-12"> <input type="text" ng-model="search.name"
                 placeholder="Quick Search user"
                 class="form-control" ></div>
</div>
</div>
<div ng-repeat="el in contacts | filter:search" class='partner-panel animate-repeat'>
    <div class="alert " ng-class="css" >
        <div class="name">
            (<span ng-bind="el.id"> </span>) <span ng-bind="el.name"></span>
        </div>
        <div ng-bind="el.email">
        </div>
        <div ng-bind="el.partner_name">
        </div>

</div>

4 个答案:

答案 0 :(得分:2)

根据documentation你应该使用

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

答案 1 :(得分:1)

您需要输入name,mail和partner_name,您可以使用以下过滤器:

   ng-repeat="el in contacts | filter:{name: search.name, email: search.mail, partner_name: search.partner}"

答案 2 :(得分:1)

您可以编写一个自定义过滤器,它将应用您需要的任何搜索逻辑:

app.filter('myFilter', function() {
    return function(contacts, search) {
        if (!search) {
            return contacts;
        }

        // search.name will contain the input entered in the field    
        var searchRegex = new RegExp(search.name, 'i');
        return contacts.filter(function(item) {
            // look for match in name or email properties of the contact
            return searchRegex.test(item.name) || searchRegex.test(item.email);
        });
    };
});

然后:

<div ng-repeat="el in contacts | myFilter:search">

通过这种方式,您可以使用一个搜索框来查看联系人模型的不同属性:

<input type="text" 
       ng-model="search.name"
       placeholder="Quick Search user"
       class="form-control" />

答案 3 :(得分:1)

尝试使用:

// on event xyz.... jQuery(".common").hide(function(){ jQuery("#id3").show(); });

将字段放在AngularJS文档 {{ expression | filter1 | filter2 }}

中记录的三个过滤器中