1

我在 AngularJS 中使用 ng-table 和 Ruby on Rails 后端。我正在使用 ng-table 一次显示 10 行,并且正在服务器端进行搜索/排序和分页。

我遇到的问题是过滤器在每次击键后都会向服务器发送请求,是否可以让 ng-table 等到我想通过提交按钮将过滤器发送到服务器?

  $scope.tableParams = new ngTableParams({
    page: if page then page else 1,
    count: 10,
    sorting: { invoice_no: 'desc'}
  }, {
    total: 0,

    getData: ($defer, params) ->
      Invoice.query params.url(), (data) ->
        params.total($scope.total)

        # put params in url
        $location.search(params.url())

        # Paginate / update table with new data
        $defer.resolve(data)
  })

我目前的看法

<table ng-table="tableParams" show-filter="true" class="table">
  <tr class='listing' ng-repeat="invoice in $data">
    <td data-title="'Invoice No.'" sortable="'invoice_no'" filter="{'invoice_no':'text'}">
      {{invoice.invoice_no}}
    </td>
  </tr>
</table>
4

1 回答 1

1

内联过滤器将被调用多次。

要在单击提交按钮时调用一次过滤器,请添加一个单击处理程序:

<button type="submit" ng-click="onSubmit()" />

在您的控制器中,在您的点击处理程序中调用您的过滤器:

app.controller('ctrl', function($scope, $filter) {
   $scope.$data = [];

   $scope.onSubmit = function() {
       $scope.$data = $filter('filter')($scope.data, {'invoice_no':'text'});
   }
});
于 2014-08-04T06:07:49.690 回答