2015-11-06 40 views
1

因此,我面臨的問題是我想更新定義的field屬性,以顯示基於某些配置的不同值指示。我在這一個普拉克簡單化版本:如何動態更新角度ui網格列的柱狀圖

http://plnkr.co/edit/gmjUcQsnIOpqWwkoYiI8?p=preview

點擊在普拉克按鈕應切換電子郵件從actualpretend。它在範圍上循環顯示columnDefs,然後將該字段從email.actual更改爲email.pretend。更改columnDefs之後是否需要某種「刷新」功能?我試過gridApi.core.refresh(),但沒有做任何事情。感謝您的任何意見!

回答

2

http://plnkr.co/edit/ujIpJFFGRAwNUKiy0Bnm?p=preview

$scope.otherColumn = {displayName: 'Pretend', field: 'email.pretend'}; 
//change the field - is this possible??? 
$scope.changeField = function changeField() { 
    $scope.otherColumn = $scope.columnDefs.splice(1, 1, $scope.otherColumn)[0]; 
} 

你只需要添加/從columnDefs Array中的項目,它會做到這一點。

0

所以我想我可以更新與此類似我的網格,但通過重新分配一個數組的columnsDef這樣

var a = true; 
//change the field - is this possible??? 
$scope.changeField = function changeField() { 
    if (a) { 
    $scope.columnDefs = [{ field: 'name' }, { 
     displayName: 'Pretend', 
     field: 'email.pretend' 
    }]; 
    } else { 
    $scope.columnDefs = [{ field: 'name' }, { 
     displayName: 'Email', 
     field: 'email.actual' 
    }]; 
    } 
    a = !a; 
}; 

如果你把在plnkr你會看到它不具有任何影響。

這是因爲賦值不會更改$ scope.gridApi。 由於@ dave的回答建議您需要從初始化修改原始columnsDef對象,否則api下的列將不會受到影響。我很高興代碼不會爲api複製對象,或者我不得不深入api來進行此更改。