出于某种原因,getData
使用角度资源来将数据调用两次,导致资源再次执行REST请求两次< --- bad ...
知道为什么以及如何解决它?
这是一个重新创建此场景的工作testcase/plunker示例(查看浏览器控制台 - “getData被调用....”显示两次)btw,因为你可以看到我并没有真正使用该资源带来真实的数据,只是为了演示场景,在我的真实应用程序中,我确实使用资源来实现真实数据,并且它被调用两次就像在这个例子中一样,
提前致谢
在查看ng-table的src后,我注意到以下内容
$scope.$watch('params.$params', function(params) {
$scope.params.settings().$scope = $scope;
$scope.params.reload();
}, true);
这意味着表格在count/filter/group/groupBy/page/sorting
上称之为'getData'
这解释了我所看到的行为。
答案 0 :(得分:10)
当你调用params.count(...)时,你要求ng-table在你改变页面大小时刷新数据。这就是为什么你有两个get-data调用。
如果您不想进行分页,请删除对params.count和params.total的调用。 如果您需要分页,请设置页面大小,不要在getData中更改它。
答案 1 :(得分:0)
这件事发生在我身上有一个奇怪的原因。 getData在init(第一次加载)上被调用两次。更改页面或排序没有两次调用getData。原因是在init时,ng-table指令隐藏在模板文件中。
答案 2 :(得分:0)
感谢@Alexander Vasilyev。正如你所说,我理解我的问题。我想在这里解释一下。事实上,对象" params"是表格ng-table的对象配置,然后是" params"更改(例如:count或对象的属性),ng-table将调用函数getData()来刷新表。 就我而言,我希望获得对象中的信息" params"并改变它但我不想刷新ng-table。我是通过克隆对象" params" et work他的对象被复制了。用jQuery克隆JS中的对象:
var resultParams = jQuery.extend(true, {}, params.$params);
然后,我将处理对象resultParams而不是" params"原始