Как скрыть столбец действий в extjs 4 - PullRequest
2 голосов
/ 06 марта 2012

У меня есть сетка с

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 Ответ

1 голос
/ 06 марта 2012

ОБНОВЛЕНИЕ: Включенные предложения @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);
    }
  });
}
...