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

如何在angularjs中使用自定义过滤器,angularjs,Angularjs,`在我的代码中,iam使用自定义过滤器过滤性别(男性、女性)。 但在我的输出中,当我单击“男性”时,它不会过滤,但当我单击“女性”时,它会显示仅由女性组成的过滤输出。我不知道我的错误在哪里 app.filter('myFilter', function () { return function (items, filterby) { var filtered = []; var filtermatch = new RegExp(filterby, '

`在我的代码中,iam使用自定义过滤器过滤性别(男性、女性)。 但在我的输出中,当我单击“男性”时,它不会过滤,但当我单击“女性”时,它会显示仅由女性组成的过滤输出。我不知道我的错误在哪里

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>
app.filter('myFilter',函数(){
返回函数(项目、过滤器){
var筛选=[];
var filtermatch=new RegExp(filterby,'i');
对于(变量i=0;i
  • 名称:{x.Name} 地址:{x.Address} 性别:{x.Gender} 国家:{x.Country} 同意:{x.Agree}
  • 这是我单选按钮的代码,男性和女性

    <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>
    
    
    按性别筛选
    女性
    男性的
    
    除了不使用
    排序
    参数之外,如果要将多个参数传递给一个过滤器,可以使用
    将它们分开

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

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

    它可能过滤正确。问题是搜索词“male”将同时包含“female”和“male”,因为您可以在female中找到术语“male”。只需使用not female(即!female).

    那么语法是错误的?这个答案可能会帮助你:@RahilWazir:为什么你说过滤器声明是错误的?@ExpertSystem,因为这不是创建过滤器的正确方法。@RahilWazir:我明白了:)