Итак, вы можете переопределить Ext.Component, чтобы добавить туда механизм разрешений. Это будет примерно так:
Ext.define('overrides.Component', {
override: 'Ext.Component',
accessId: false,
initComponent: function () {
this.callParent();
if (this.accessId) {
this.checkPermissions()
}
},
checkPermissions() {
Ext.Ajax.request({
url: 'checkPermissions.json',
params: {
ssid: Ext.util.Cookies.get("token"),
access_id: this.accessId
},
success: function (response, opts) {
res = Ext.decode(response.responseText);
this.setHidden(res.success === true);
},
scope: this
});
}
});
Ext.Component - это базовый класс всех элементов Ext (текстовое поле, форма, сетка .. панель инструментов). Таким образом, все дочерние компоненты получат эту функцию.
В следующем примере скрипта подэлементы gui делают ajax запросов и скрываются, если они завершаются успешно: false (это случайное значение). Просто запустите приложение повторно, чтобы увидеть результат.
FIDDLE
Конечно, вы должны отредактировать это решение в соответствии со своими потребностями.
Недостатки этого решения:
- Вы будете делать много ajax запросов, что нехорошо, лучше реализовать какой-нибудь механизм пакетного режима.
- если Компонент скрыт, по умолчанию он будет отображаться, поэтому вам необходимо также реализовать этот logi c. ... ...