2016-01-22 23 views
0

我想刷新在ui-grid中編輯過的行,而不是整個表。如何在ui-grid中刷新一行?

所以我的商業案例是,我編輯網格中的一行,觸發一個休息電話,我想更新網格中的特定行。

上休息呼叫成功:

$http.put(representation.getLink('reports').href, { 
     changes: manualModifications, 
     comment: comment 
    }).success(function(updatedEntities) { 
     for (var i = 0; i < updatedEntities.length; i++) { 
      angular.forEach(controller.gridOptions.data, function(entity) { 
       if (updatedEntities[i].factId === entity.factId) { 
        entity.value = updatedEntities[i].value; 
        entity.dataOrigin = updatedEntities[i].dataOrigin; 
        entity.isDirty = false; 
       } 
      }); 
     } 
     controller.gridApi.core.refresh(); 
    }); 

作品,以及用:

controller.gridApi.core.refreshRows(); 

此更新僅行的網格內,但仍刷新所有行。

我看過網格api,但我找不到這樣做。

我在想,因爲我有一個forEach循環內的網格行的引用應該可以更新只是單一的行。

+0

在你的發佈代碼中,你甚至沒有使用從你的PUT返回的'data'變量,什麼是'updatedEntities'?你沒有足夠的張貼來給出一個不只是猜測的答案。 – tylerwal

+0

updatedEntities是從後端返回的響應/數據,謝謝指出。 – aurelius

回答

0

根據您如何進行REST調用(直接使用JQuery,XHR等),您可能需要調用$scope.$digest()以使其在摘要循環中回到角度。

+0

我已經添加了其他方式,請撥打電話 – aurelius

+1

@aurelius應該沒問題,不需要添加摘要呼叫。請發表一個[mcve] –

+0

我的解決方案,我發佈的代碼與這種可能的改進有關,只是爲了更新從其他響應返回的行而不是所有的網格行。 – aurelius