AngularJS ngTable不使用http调用触发getData方法

时间:2017-02-07 16:04:51

标签: javascript angularjs ngtable

我正在尝试将ngTable与angularJS一起使用。

我安装了所有有角度的工作人员,而且效果很好。

现在,我需要使用ngTable。

我正在使用下一个代码,但我的http get永远不会被触发。

我在这里缺少什么?

我的代码:

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/ng-table@2.0.2/bundles/ng-table.min.css">
<script src="https://unpkg.com/ng-table@2.0.2/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>

1 个答案:

答案 0 :(得分:1)

如果在创建控件后使用reload()方法,它将起作用。

您还在使用.success,但对于$http,您必须使用.then方法。

我在getData中放了一个debugger调用,所以如果你打开你的DevTools,就可以看到它会被执行。

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/ng-table@2.0.2/bundles/ng-table.min.css">
<script src="https://unpkg.com/ng-table@2.0.2/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>