2017-05-25 5 views
0

ng-tableのフィルタリングで悩んでいます。ネストしたオブジェクトのプロパティでAngularJS ngTableでフィルタリングを使用する

http://ng-table.com/#/filtering/demo-nested-propertyのサンプルでは、​​この構文をマークアップに使用して、以下に示します。しかし、私のコントローラ(下のコード)でフィルタリングをしようとすると動作しません。

コントローラのフィルタオブジェクトを取得したときのサイトのサンプルを使用して、私は {tabela_tuss.descricao:"asda"}を取得します。正しいは次のようになります。{tabela_tuss:{descricao:"asda"}}

私が持っている:I場合は、

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

しかし:

//マークアップ:

<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> 

動作するためには、私のようにフィルタを必要としますそれを行うと、角度の誤差が次のようになります。

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'} 
] 

答えて

0

構文エラーがあるので、あなたは、解析、構文エラーを取得しています。私はあなたに同意

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

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

からあなたのフィルタを変更し 。私はそれをテストした。 "angle.js:14328 TypeError:未定義のプロパティ 'indexOf'を読み取ることができません t.getTemplateUrl(ngTableFilterConfig.ts:81)で fn(eval at compile(angular。 JS:15156)、:4:スコープで306) $ダイジェスト(angular.js:17806)スコープで $適用されます(angular.js:18080)済(angular.jsで :12210)completeRequestで (angular.js:12436) at XMLHttpRequest.requestLoaded(angular.js:12364) " –

関連する問題