角度数据表dtInstance.reloadData()与dtInstance.rerender()之间有什么区别

时间:2017-02-03 04:50:12

标签: angularjs

我正在使用角度数据表来加载从服务调用返回的数据列表。它启用了服务器端分页,并且可以使用rowCount变量

切换分页长度
var vm=this;
vm.DisplaySLAChart  =true;           
var rowCount = (vm.DisplaySLAChart==true?5:10);
vm.dtInstance = {};    

vm.dtOptions = DTOptionsBuilder.newOptions()
.withFnServerData(serverData)
.withDataProp('data')
.withOption('processing', true)
.withOption('serverSide', true)
.withOption('paging', true)
.withPaginationType('full_numbers')
.withDisplayLength(rowCount)
.withDOM('<"top">t<ip"bottom"><"clear">');

function serverData(sSource, aoData, fnCallback, oSettings)
{
     //Server side data fetching logic
}

我需要根据&#34; vm.DisplaySLAChart&#34;更改此页面长度用户在复选框ng-change事件上设置的标志。复选框正在设置&#34; vm.DisplaySLAChart&#34;的值使用ng-model。 如果该标志为true,则每页仅显示5条记录。否则每页显示10条记录。

复选框ng-change调用以下方法。

vm.toggleLength = function () {

 var rowCnt = (vm.DisplaySLAChart == true ? 5 : 10);
 vm.dtOptions.withDisplayLength(rowCnt);
 vm.dtInstance.reloadData();
};

如果我使用vm.dtInstance.reloadData(),那么数据表会加载rowcnt变量中指定的数字记录的数据。没问题。

如果我使用vm.dtInstance.rerender();代替vm.dtInstance.reloadData();,那么有时会显示的记录数量是错误的。

我想知道rerender和reloaddata之间有什么区别。 感谢您的帮助

1 个答案:

答案 0 :(得分:1)

dtInstance.rerender():这将完全重绘表格。这不需要将数据重新发送到服务器。

dtInstance.reloadData():通过将请求重新发送到服务器来重新加载DataTable的数据。此API仅适用于Ajax渲染器和Promise渲染器。