所以我面临的问题是我想更新field
定义的columnDef
属性,以根据传递给指令的某些配置显示不同的值。我有一个愚蠢的版本:
http://plnkr.co/edit/gmjUcQsnIOpqWwkoYiI8?p=preview
点击该插件中的按钮可将电子邮件从actual
切换为pretend
。它会在范围columnDefs
上循环,然后将字段从email.pretend
更改为email.actual
。更改columnDefs后是否需要某种“刷新”功能?我试过gridApi.core.refresh()
,但没有做任何事情。感谢您的任何意见!
答案 0 :(得分: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
数组中的项目即可。
答案 1 :(得分: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才能进行此更改。