2016-12-12 21 views
1

我想實現UI網格到我的應用程序。當我將靜態數據分配到gridOptions.data時,一切正常;然而,當我從服務器加載數據後動態地將數據分配給gridOptions.data時,我總是得到一個空字符串。我嘗試使用$timeout函數複製動態行爲,結果如下:空網格。數據綁定 - 用戶界面

// CTRL開始

這工作。

$scope.data = [ 
      { addedBy :"user", displayName:"Name1" }, 
      { addedBy :"user2", displayName:"Name2" }, 
      { addedBy :"user3", displayName:"Name3" } 
      ]; 

這不,將網格留空。

$timeout(function() { 
     $scope.data = [ 
     { addedBy :"user", displayName:"Name1" }, 
     { addedBy :"user2", displayName:"Name2" }, 
     { addedBy :"user3", displayName:"Name3" } 
     ]; 
    }); 

代碼的其餘部分保持不變。

$scope.columnDefs = [ 
     {name: 'displayName'}, 
     {name: 'addedBy'} 
     ]; 

$scope.gridOptions = { 
columnDefs: $scope.columnDefs, 
data: $scope.data 
}; 

// CTRL結束

// HTML開始

<div class="col-md-12 no-padding" ui-grid="gridOptions" class="grid"></div> 

// HTML結束

我非常的UI電網應該能夠在數據更新數據變化的變化;那麼我在這裏失去了一些基本的東西?

回答

1

網格初始化時數據不可用。您必須手動撥打notifydataChange,以便網格更新或重新分配,如Ronald所說。

他們在後期

+0

謝謝@ndoes,任何想法應該是什麼notifyDataChange調用的參數?任何鏈接到它的例子/文件將是有幫助的。我可以看到在共享的鏈接中刪除/添加列的示例,但是notifyDataChange api的任何特定定義? – user1242321

+0

忽略;我在這裏找到它:https://github.com/angular-ui/ui-grid/blob/441613f/src/js/core/factories/Grid。js#L617和這裏:http://ui-grid.info/docs/#/api/ui.grid.class:Grid – user1242321

0

你可以做的另一種方法是默認情況下,電網定義爲空數組,並在您的服務器調用的響應將其分配到電網的documentation一個例子。

$scope.columnDefs = [ 
     {name: 'displayName'}, 
     {name: 'addedBy'} 
     ]; 

$scope.gridOptions = { 
columnDefs: $scope.columnDefs, 
data: [] 
}; 

$timeout(function() { 
     $scope.data = [ 
     { addedBy :"user", displayName:"Name1" }, 
     { addedBy :"user2", displayName:"Name2" }, 
     { addedBy :"user3", displayName:"Name3" } 
     ]; 
$scope.gridOptions.data=$scope.data; 
    }); 
0

我有非常動態的網格,其中數據刷新大量的參數。我總是直接將數據分配回$ scope.gridOptions.data。

$timeout(function() { 
    $scope.gridOptions.data = [ 
    { addedBy :"user", displayName:"Name1" }, 
    { addedBy :"user2", displayName:"Name2" }, 
    { addedBy :"user3", displayName:"Name3" } 
    ]; 
}); 

數據正在這裏重新分配,你的每一個搜索結果

NotifyDataChange事件可以這樣使用:

$scope.gridOptions.onRegisterApi = function (gridApi) { 
    //set gridApi on scope 
    $scope.gridApi = gridApi; 
     $scope.gridApi.core.notifyDataChange(uiGridConstants.dataChange.COLUMN); 
    }; 

您必須添加在uiGridConstants依賴你控制器。 但是從我的發現/測試中,如果您將數據重新分配給gridOptions.data,則不需要notifyDataChange事件。

+0

爲你做這個工作?根據文檔,這很奇怪,我發現需要調用'notifyDataChange'事件,沒有這個事件,數據不應該在網格上更新。 – user1242321

+0

我發現我在網格上也使用了notifyDataChange事件。但在這種情況下,數據正在重新分配,所以我認爲它應該沒有這個事件。我會在今天的某個時間測試它,並用我的結果更新你。 – Bhavjot

+0

是測試過它,重新分配數據不需要notifyDataChange事件 – Bhavjot

相關問題