Datatables 使用角度数据表和FNServerData进行自定义服务器端筛选
我正在尝试对角度数据表使用服务器端处理。为了过滤结果,我不能使用列过滤器插件,因为我想实现自己的自定义搜索字段和自定义“搜索”按钮,该按钮将触发对服务器的新查询 我使用DTOptionsDatatables 使用角度数据表和FNServerData进行自定义服务器端筛选,datatables,angular-datatables,Datatables,Angular Datatables,我正在尝试对角度数据表使用服务器端处理。为了过滤结果,我不能使用列过滤器插件,因为我想实现自己的自定义搜索字段和自定义“搜索”按钮,该按钮将触发对服务器的新查询 我使用DTOptionswithFnServerData而不是withOption('ajax',…)从服务器获取数据,因为这样我可以重用封装URL的angular服务,并且它可以很好地进行分页和排序。这是视图中的简化代码: <div ng-controller="myController"> <div ng-
withFnServerData
而不是withOption('ajax',…)
从服务器获取数据,因为这样我可以重用封装URL的angular服务,并且它可以很好地进行分页和排序。这是视图中的简化代码:
<div ng-controller="myController">
<div ng-click="makeQuery()">Search</div>
<table id="mytable" datatable="" dt-instance="dtInstance" dt-options="dtOptions" dt-columns="dtColumns" >
</table>
</div>
但我不知道在单击自定义搜索按钮时如何触发新的服务器查询
我的具体问题是:
- 实际上是否可以使用fnserverdata使其与
一起工作
- 我在这里找到了另一篇文章,建议使用
,但这个例子使用的是DTOptions$scope.dtInstance.reloadData()
,我尽量避免使用withOption('ajax',…)
这是唯一可行的方法吗?欢迎任何帮助。谢谢 以下帖子中的示例使用了
with fnserverdata
和reloadData()
而没有问题:
$scope.makeQuery = function() {
// how do I trigger a query to the server from here,
// that does exactly the same as the function passed to withFnServerData ?
}
$scope.dtInstance = {};
$scoper.dtOptions = DTOptionsBuilder
.newOptions()
.withBootstrap()
.withOption('responsive', true)
.withOption('processing', false)
.withOption('serverSide', true)
.withOption('searching', false)
.withPaginationType('full_numbers')
.withDataProp('data')
.withFnServerData(function (sSource, aoData, fnCallback, oSettings) {
var draw = aoData[0].value;
var columns = aoData[1].value;
var order = aoData[2].value;
var start = aoData[3].value;
var length = aoData[4].value;
var search = aoData[5].value;
var queryFilter = ... // build my custom filter params extracting values from the aoData variables above
//dataProvider encapsulates a call to the right URL using $http and returns a promise
dataProvider(queryFilter).then(function(response) {
var records = {
'draw': draw,
'recordsTotal': response.data.numRecords,
'recordsFiltered': response.data.numRecords,
'data': response.data.records
};
fnCallback(records);
});
});