在AngularJS ngTable中使用过滤嵌套对象属性

时间:2017-05-25 19:14:13

标签: angularjs ngtable

我坚持使用ng-table过滤。

http://ng-table.com/#/filtering/demo-nested-property中的示例表示将此语法用于标记,如下所示。但是当我尝试在我的控制器中进行过滤时,它不起作用(下面的代码)。

当我在控制器中获取过滤器对象时,使用站点的示例,我得到了 {tabela_tuss.descricao:"asda"}。正确的是:{tabela_tuss:{descricao:"asda"}}

我有:

//标记:

<table ng-table="tableParams" class="table table-bordered table-striped table-condensed">
 <tr ng-repeat="row in $data track by row._id">
 <td  data-title="'Descrição'" filter="{ 'tabela_tuss.descricao': 'text' }" >{{row.tabela_tuss.descricao}}</a></td>
  </td>
 </tr>
</table>

为了工作,我需要一个过滤器:

 filter="{ 'tabela_tuss:{'descricao': 'text' }}"

但是,如果我这样做,我会在角度中得到错误:

angular.js:14328 Error: [$parse:syntax] Syntax Error: Token '}' is an unexpected 
token at column 37 of the expression [{ 'tabela_tuss:{descricao': 'text'} }] 
starting at [}].

我需要在我的控制器中使用该过滤器: //控制器

dataService.getProcedimentos().then(function (response){
        $scope.data=response.data;
        $scope.tableParams = new NgTableParams({
            page: 1,            // show first page
            count: 10,
            sorting: {
              nome: 'asc'
            }
        }, 
        {        getData: function(params) {
                  var sdata = params.sorting() ? $filter('orderBy')($scope.data, params.orderBy()) : $scope.data;
                  sdata = params.filter() ? $filter('filter')(sdata, params.filter()) : sdata;
                  //sdata = params.filter() ? $filter('filter')(sdata, {tabela_tuss:{descricao:'B'}}) : sdata;
                  console.log(params.filter());
                  params.total(sdata.length);
                  sdata = sdata.slice((params.page() - 1) * params.count(), params.page() * params.count());
                  return sdata;
                }
        }
        );
      });

我的数据样本是:

data:[
{_id: "5927043517e34011e48d8444", 
nome: "proced 1",
tabela_tuss:{id:1,descricao:'descr test'}
]

1 个答案:

答案 0 :(得分:0)

您收到解析语法错误,因为存在语法错误。 从

更改过滤器
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="tempEditorView">
  <div class="widgetHeading widgetWrap" style="display: block;">
    <div class="LPtempEditArea"><i class="LPclone">Clone</i></div>
    <h1 contenteditable="true">Add your heading text here</h1>
  </div>
</div>

       filter="{ 'tabela_tuss:{'descricao': 'text' }}"