点击提交后的ng-table过滤器

时间:2014-08-04 06:00:40

标签: ruby-on-rails angularjs ngtable

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

1 个答案:

答案 0 :(得分: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'});
   }
});