过滤表格列,其中字段是角度为json的对象

时间:2016-06-05 21:27:21

标签: angularjs json angularjs-filter

我用HTML创建了一个表,其中一个列是json。

我想通过用户名字段json过滤该列,如下所示:

<tr
ng-repeat="row in tagUserstory.tasks | 
orderBy:sortType:sortReverse | 
filter: (comboOptionsSelected.num == 3 ? {assignedto.username: searchTaskAssignedto} : searchTask)">

assignedto.username 其中assignedto是一个带有用户名字段的json,但这样做是不可能的,因为抛出错误:expected :

我还必须为这个字段创建一个不同的过滤器,因为如果未定义其他列的过滤器则不起作用。

我也试过这样的函数:

$scope.FilterFunction = function (item) {
        if(item.assignedto == undefined || item.assignedto == ''){
          return false;
        }
        else if(item.assignedto.username == undefined || item.assignedto.username == ''){
          return false;
        }
        else if(item.assignedto.indexOf($scope.searchTaskAssignedto) >= 0){
          return true;
        }
        else{
          return false;
        }


      };

用HTML两种方式:

<tr
 ng-repeat="row in tagUserstory.tasks | 
orderBy:sortType:sortReverse | 
filter: (comboOptionsSelected.num == 3 ? FilterFunction : searchTask)">

    <tr
     data-ng-repeat="row in tagUserstory.tasks | orderBy:sortType:sortReverse | 
     filter:searchTask"
     ng-hide="comboOptionsSelected.num == 3 && !FilterFunction">

但过滤器向我显示了所有存在的结果。

如果我以这种方式制作过滤器,也会发生同样的情况:

angular.module('myAppAngularMinApp')

  .filter('prueba', function () {
    return function (item, searchTaskAssignedto) {
      if(item.assignedto == undefined || item.assignedto == ''){
        return false;
      }
      else if(item.assignedto.username == undefined || item.assignedto.username == ''){
        return false;
      }
      else if(item.assignedto.indexOf(searchTaskAssignedto) >= 0){
        return true;
      }
      else{
        return false;
      }

    };
  })

在HTML中:

<input ng-show="comboOptionsSelectedTask.num == 3" type="text" class="form-control" ng-model="searchTaskAssignedto"/>

<tr
 ng-repeat="row in tagUserstory.tasks | orderBy:sortType:sortReverse | filter: (comboOptionsSelected.num == 3 ? {prueba : searchTaskAssignedto} : searchTask)">

有什么想法吗?

非常感谢。

0 个答案:

没有答案