我在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>
答案 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'});
}
});