如何在angularjs中使用自定义过滤器

时间:2014-08-08 11:33:51

标签: angularjs

`在我的代码中使用自定义过滤器来过滤性别(男性,女性)。 但在我的输出中,当我点击男性它不会过滤,但当我点击女性它显示过滤输出仅包括女性。我不知道我的错误在哪里。

app.filter('myFilter', function () {
    return function (items, filterby) {
        var filtered    = [];
        var filtermatch = new RegExp(filterby, 'i');

        for (var i = 0; i < items.length; i++) {

            if (filtermatch.test(items[i].gender) {
                filtered.push(items[i]);
            }
         }

         return filtered;
    };
});

<ul id="result">
    <li ng-repeat="x in details | myFilter:filterby">
        <div>Name:    {{x.name   }}</div>
        <div>Address: {{x.address}}</div>
        <div>Gender:  {{x.gender }}</div>
        <div>Country: {{x.country}}</div>
        <div>Agree:   {{x.agree  }}</div>
    </li>
</ul>

这是我男性和女性单选按钮的代码

<div class="form-group">

<label for="filterby" class="control-label col-xs-2">Filter By Gender</label>
    <div class="radio">

        <label>

            <input type="radio" name="options" id="options2" 
            ng-model="filterby" value="female">
            <label for="gender" class="control-label col-xs-2">Female</label>
        </label>

        <label>
            <input type="radio" name="options" id="options2" 
            ng-model="filterby" value="male">
            <label for="gender" class="control-label col-xs-2">male</label>
        </label>
    </div>
        </div>

2 个答案:

答案 0 :(得分:1)

除了您没有使用sort参数之外,如果您想将多个参数传递给过滤器,请将它们与:分开。

ng-repeat="x in details | myFilter:prop1:prop2">

这会在返回的数组上调用myFilter(details, prop1, prop2)ngRepeat

答案 1 :(得分:1)

可能正确过滤。问题是搜索术语&#34;男性&#34;将包括&#34;女性&#34;和男性&#34;因为你可以找到术语&#34;男性&#34;在fe 男性。只是使用而不是女性(即女性)。