【问题标题】:AngularJs Filter Not Array in Nested ObjectAngularJs过滤器不是嵌套对象中的数组
【发布时间】:2017-12-23 13:07:02
【问题描述】:

我有一个嵌套的 JSON 数据。我正在使用来自这个 JSON 数据的 ng-repeat 将对象写入表。但我想通过这个 ng-repeat 的属性进行过滤。我该怎么做。

示例:

<tr ng-repeat="i in inspections.analizFirst">
    <td>{{$index+1}}</td><td>{{i.analiz}}</td><td>{{i.poi_adi}}</td><td>{{i.mesafe}}</td>
</tr>

它可以在没有过滤器的情况下工作。但我需要像ng-repeat="i in inspections.analizFirst | filter:{analiz:'ulasim analizi'}"一样过滤

【问题讨论】:

  • ng-repeat="i in inspections.analizFirst | filter:{analiz:'ulasim analizi'}" 有什么问题,出现错误?
  • 错误是[filter notarray]

标签: javascript angularjs json filter angularjs-ng-repeat


【解决方案1】:

使用控制器:

您可以过滤控制器内部的数据,然后在 html 中引用过滤后的对象。当您将所有业务逻辑放在控制器中时,它通常更具可读性

创建您自己的过滤器:

如果您打算在应用程序中多次使用此过滤器,那么创建一个新过滤器可能是个好主意:

appModule.filter('myFilter', function() {
  return function(orginalList, arg1, arg2) {
    var filteredObject = [];
    orginalList.forEach(function(e) {
      if(e.analiz === arg1)
           filteredObject.push(e) 
    })
    return filteredObject;
   };
 })

html

<tr ng-repeat="i in inspections.analizFirst | myFilter:'ulasim analizi'">
  <td>{{$index+1}}</td><td>{{i.analiz}}</td><td>{{i.poi_adi}}</td><td>
 {{i.mesafe}}</td>
</tr>

【讨论】:

    【解决方案2】:

    就像这样:

    <tr ng-repeat="i in inspections.analizFirst | filter:'ulasim analizi'">
        <td>{{$index+1}}</td><td>{{i.analiz}}</td><td>{{i.poi_adi}}</td><td>{{i.mesafe}}</td>
    </tr>
    

    【讨论】:

    猜你喜欢
    • 2013-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-08
    • 1970-01-01
    • 1970-01-01
    • 2020-03-11
    • 2020-03-08
    相关资源
    最近更新 更多