2015-11-06 104 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来进行此更改。