2014-03-03 36 views
2

因爲當getData使用角資源,使之被稱爲兩倍的數據由於某種原因,造成資源做REST請求兩次太< ---壞...ng-table,getData多次調用,爲什麼?

任何想法,爲什麼和怎麼解決呢?

這裏工作testcase/plunker重新創建這個場景的例子(看看瀏覽器控制檯 - 「getData被調用....」顯示兩次)順便說一句,你可以看到我沒有真正使用資源來帶來真正的數據,只是爲了演示的情景,在我真正的應用程序我使用的資源帶來真正的數據和它被稱爲兩次,就像在這個例子中,提前

感謝


尋找到的將src後NG-表,我注意到以下

$scope.$watch('params.$params', function(params) { 
    $scope.params.settings().$scope = $scope; 
    $scope.params.reload(); 
}, true); 

這意味着表格將它稱爲'getData'count/filter/group/groupBy/page/sorting 這解釋了我所看到的行爲。

回答

10

當你調用params.count(...)你問NG-表爲你改變頁面大小來刷新數據。這就是爲什麼你有兩個get-data調用。

如果你不希望有分頁,然後取出電話params.count和params.total。 如果您需要分頁,請設置頁面大小,並且不要在getData中更改它。

+1

你是對的...看起來像是重新加載count/filter/group/groupBy/page/sorting。謝謝 – Daniel

0

這發生在我身上有奇怪的原因。 getData僅在init(第一次加載)時被調用兩次。更改頁面或排序不會兩次調用getData。原因是在init時,ng-table指令隱藏在模板文件中。

0

謝謝@Alexander瓦西里耶夫。正如你所說,我理解我的問題。我想在這裏解釋一些小問題。實際上,對象「PARAMS」是對象配置表NG-表,則如果「PARAMS」改變(例如:計數或對象的屬性),NG-表將調用函數的getData()來刷新表。 在我的情況下,我想獲取對象「params」中的信息並更改它,但我不想刷新ng-table。我通過克隆對象「params」並複製他的對象來完成它。克隆在JS對象使用jQuery:

var resultParams = jQuery.extend(true, {}, params.$params); 

然後,我會在對象resultParams而不是「PARAMS」原創作品。

相關問題