具有谓词函数的角度ng重复滤波器不能按预期工作

Mr.*_*yen 5 predicate angularjs angularjs-ng-repeat

这是我第一次玩AngularJS,实际上,我正在按照入门教程进行操作.我想到了我会将教程脚本调整到我的理解中,只需添加一些本教程中没有的内容.

基本上,本教程中使用的手机对象是:

    {
        "age": 1, 
        "id": "motorola-xoom", 
        "imageUrl": "img/phones/motorola-xoom.0.jpg", 
        "name": "MOTOROLA XOOM™", 
        "snippet": "The Next, Next Generation..."
    }
Run Code Online (Sandbox Code Playgroud)

我试图做的是添加一个自动填充的选择框来订购列表:

    <select ng-model="orderProp">
        <option ng-repeat="(key, value) in phones[0]" value="{{key}}">
            {{labels[key]}}
        </option>
    </select>
Run Code Online (Sandbox Code Playgroud)

并为控制器添加了模型标签:

    $scope.labels = {
        "name": "Phone name",
        "snippet": "Description",
        "age": "Newest",
    };
Run Code Online (Sandbox Code Playgroud)

它按预期工作,除了我只想过滤上面的3个属性,所以我认为很容易添加自定义谓词函数进行过滤,如下所示:

    $scope.isPhonePropFilterable = function (propName) {
        console.log('it DOES NOT get here!!!');
        return propName == 'name' || propName != 'snippet' || propName != 'age';
    };
Run Code Online (Sandbox Code Playgroud)

并将其添加到ng-repeat中

        <option ng-repeat="(key, value) in phones[0] | filter:isPhonePropFilterable" value="{{key}}">
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,它并不像我想象的那么容易,我的过滤功能没有被调用.

在这里看到:plunker

我做错了什么吗?


编辑: ng-repeat 过滤器仅支持过滤数组,而不支持对象.如果数组参数不是数组,则过滤函数返回...

Mr.*_*yen 4

好吧,这是我的错。NG-repeat 过滤器仅支持数组,它只在文档中提到数组。并检查过滤器函数,如果数组参数不是数组,它就会返回......