2017-02-07 2 views
0

J'essaie d'utiliser ngTable avec angularJS.AngularJS ngTable ne déclenche pas la méthode getData utilisant l'appel http

J'ai installé tout le personnel angulaire et ça marche bien.

Maintenant, j'ai besoin d'utiliser ngTable. J'utilise le code suivant mais mon http get n'est jamais déclenché.

Qu'est-ce qui me manque ici?

Mon code:

angular.module('clinang', ['ngTable']).controller('pacientesCtrl', function($scope,$http,NgTableParams){ 
 
    this.tableParams = new NgTableParams({ 
 
    page: 1, 
 
    count: 10 
 
    }, { 
 
    getData: function($defer, params) { 
 
     $http.get('/getdadospac/?oper=S', {params: { 
 
     pageNumber:params.page() - 1, 
 
     rangeStart:rangeStart, 
 
     rangeStop:rangeStop}}) 
 
     .then(function(data, status) { 
 

 
     params.total(data.results.total); 
 

 
     $defer.resolve(data.results); 
 
     }); 
 
    } 
 
    }); 
 

 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<link rel="stylesheet"; href="https://unpkg.com/[email protected]/bundles/ng-table.min.css"> 
 
<script src="https://unpkg.com/[email protected]/bundles/ng-table.min.js"></script> 
 
<body ng-app="clinang"> 
 
    <div ng-controller="pacientesCtrl"> 
 
    <a class='btn btnprimary' href='/getdadospac/?oper=S' >Button</a> 
 
    <table ng-table="vm.tableParams" class="table" show-filter="true"> 
 
     <tr ng-repeat="paciente in $data"> 
 
     <td title="'Pront'" filter="{ name: 'text'}" sortable="'pront'"> 
 
      {{paciente.pront}}</td> 
 
     <td title="'Nome'" filter="{ age: 'number'}" sortable="'nome'"> 
 
      {{paciente.nome}}</td> 
 
     </tr> 
 
    </table> 
 
    </div> 
 
</body>

+0

'ng-app = "clinang"' 'sur body' /' tag html' –

+0

Aussi je ne sais pas ngTable mais je trouve bizarre que vous définissez une fonction appelée getData () mais il n'est jamais appelé dans votre code (peut-être une fonctionnalité ngTable si) – Tonio

+0

@Pankaj Parkar J'ai défini ng-app. Je ne suis pas poste pour la brièveté. –

Répondre

1

Si vous utilisez la méthode reload() après la création du contrôle, il va travailler. Vous utilisez également .success mais pour $http vous devez utiliser la méthode .then.

Je mets un appel debugger dans le getData, donc si vous ouvrez votre DevTools, vous pouvez voir qu'il sera exécuté.

angular.module('clinang', ['ngTable']).controller('pacientesCtrl', function($scope,$http,NgTableParams){ 
 
    this.tableParams = new NgTableParams({ 
 
    page: 1, 
 
    count: 10 
 
    }, { 
 
    getData: function($defer, params) { 
 
    debugger; 
 
     $http.get('/getdadospac/?oper=S', {params: { 
 
     pageNumber:params.page - 1}}) 
 
     .then(function(data, status) { 
 

 
     params.total(data.results.total); 
 

 
     $defer.resolve(data.results); 
 
     }); 
 
    } 
 
    }); 
 
    this.tableParams.reload(); 
 

 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<link rel="stylesheet"; href="https://unpkg.com/[email protected]/bundles/ng-table.min.css"> 
 
<script src="https://unpkg.com/[email protected]/bundles/ng-table.min.js"></script> 
 
<body ng-app="clinang"> 
 
    <div ng-controller="pacientesCtrl"> 
 
    <a class='btn btnprimary' href='/getdadospac/?oper=S' >Button</a> 
 
    <table ng-table="vm.tableParams" class="table" show-filter="true"> 
 
     <tr ng-repeat="paciente in $data"> 
 
     <td title="'Pront'" filter="{ name: 'text'}" sortable="'pront'"> 
 
      {{paciente.pront}}</td> 
 
     <td title="'Nome'" filter="{ age: 'number'}" sortable="'nome'"> 
 
      {{paciente.nome}}</td> 
 
     </tr> 
 
    </table> 
 
    </div> 
 
</body>

+0

Ok, mais quelle est l'erreur dans params.page? –

+0

vous devez passer cet objet afin qu'il puisse être vu à l'intérieur – andrepaulo

+0

ok, merci beaucoup. –