2017-05-25 3 views
0

Je suis bloqué avec le filtrage ng-table.Utilisation du filtrage dans AngularJS ngTable avec une propriété d'objet imbriquée

L'exemple de http://ng-table.com/#/filtering/demo-nested-property indique d'utiliser cette syntaxe dans le balisage, comme indiqué ci-dessous. Mais ça ne marche pas quand j'essaye de faire le filtrage dans mon contrôleur (code ci-dessous). En utilisant l'exemple du site lorsque j'obtiens l'objet de filtre dans le contrôleur, j'obtiens {tabela_tuss.descricao:"asda"}. Le bon sera: {tabela_tuss:{descricao:"asda"}}

Je:

// balisage:

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

Pour travailler, je besoin d'un filtre:

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

Mais, si je fais cela, je reçois une erreur en angulaire comme:

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 [}]. 

J'ai besoin que le filtre à utiliser dans mon contrôleur: // contrôleur

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; 
       } 
     } 
     ); 
     }); 

Mon échantillon de données est:

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

Répondre

0

vous obtenez une erreur de syntaxe d'analyse syntaxique, car il y a une erreur de syntaxe. Changer votre filtre de

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

à

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

Je suis d'accord avec vous. Je l'ai déjà testé. Mais si je l'utilise, j'obtiens une autre erreur: "angular.js: 14328 TypeError: Impossible de lire la propriété 'indexOf' de non défini à t.getTemplateUrl (ngTableFilterConfig.ts: 81) à fn (eval lors de la compilation (angulaire. js: 15156), : 4:. 306) à périmètre digest $ (angularjs: 17806) à périmètre $ sont applicables (angularjs:. 18080) à fait (angularjs: 12210) à completeRequest (angular.js: 12436) à XMLHttpRequest.requestLoaded (angular.js: 12364) " –