如何根据当前对象的属性进行过滤?

时间:2016-12-29 16:31:05

标签: angularjs

我有一个像这样的文件对象列表:

{"name":"A1.java", "analyze":false, "index":0},
{"name":"A2.java", "analyze":true, "index":1},
{"name":"A3.java", "analyze":false, "index":2}

我正在尝试显示包含"analyze":true的文件名。我认为它需要是这样的:

<div class="row">
  {{m.files.name | filter: m.files.analyze == true}}
</div>

但这并没有给我一个错误,而且它没有显示任何内容。

编辑:我知道有很多方法可以做到这一点,但我对过滤特别感兴趣。如果您的答案不涉及过滤或为什么无法通过过滤完成,请不要打扰,我已经知道如何做到其他方式。

2 个答案:

答案 0 :(得分:1)

使用ng-repeat和过滤器显示符合条件的所有行,如下所示:

<div ng-repeat="file in m.files | filter: {analyze: true}">
  {{ file.name }}
</div>

或者,如果你想简单地评估m.files以获得像analyze = true这样的条件,你可以创建一个自定义过滤器,比如

app.filter('fileFilter', function() {

  return function(files) {
    var result = false;
    angular.forEach(files, function(file) {
      if (file.analyze) {
        result = true;
      }
    });

    return result;

  };

});

并像这样使用它:

<div ng-show="(m.files | filter:fileFilter)">

答案 1 :(得分:0)

你可以试试这个

function PersonalFilter(data){

    return (data.analyze)? data.name:"";

}

    app.filter('myFilter', function() {
        return PersonalFilter;
    });


<div class="row">
  {{m.files | myFilter}}
</div>