Как скрыть столбец действий в extjs 4
У меня есть сетка с
columns: [
...
{ xtype:'actioncolumn',
width:40 }
...
]
initComponent: function() {
var callback=function(hasPerm) {
if(!hasPerm) {
// I want the action column go away here :)
}
}
isGranted("users.delete",callback);
}
isGranted является глобальной функцией, отправляет ajax-запрос для проверки заданного разрешения и в случае успеха вызывает данную функцию с возвращенным параметром bool.
isGranted=function(perm, fv) {
Ext.Ajax.request({
url: "/isgranted?perm="+perm,
method: 'POST',
success: function(result) {
var res=new Object();
res=Ext.JSON.decode(result.responseText);
fv(res.success);
}
});
}
Как я могу получить ссылку на столбцы, чтобы скрыть их в заданной функции обратного вызова? this.columns
не сработало.
1 ответ
Решение
ОБНОВЛЕНИЕ: Включенные предложения @DmitryB. Намного лучше.
Знайте, что initComponent не будет ждать завершения вашего вызова ajax, он продолжит и завершит сборку компонента.
columns: [
...
{ xtype:'actioncolumn',
action: 'someaction',
hidden: true,
width:40 }
...
]
initComponent: function() {
var callback=function(hasPerm) {
if(hasPerm) {
this.down('[action=someaction]').show();
}
}
isGranted("users.delete",callback, this);
}
isGranted=function(perm, fv, scope) {
Ext.Ajax.request({
url: "/isgranted?perm="+perm,
method: 'POST',
success: function(result) {
var res=new Object();
res=Ext.JSON.decode(result.responseText);
fv.call(scope, res.success);
}
});
}