Как обернуть Ajax проверок прав в функцию? - PullRequest
1 голос
/ 10 июля 2020

У меня есть проверка прав через Ajax:

Ext.Ajax.request({
 url: [url_php],
 params: {
  ssid: Ext.util.Cookies.get("token"),
  access_id: 1000000057
 },
success: function(response, opts){
  res = Ext.decode(response.responseText);
  if (res.success == true) {
   Ext.getCmp('CardUser').setHidden(false);
  }
 },
});

Оказывается, их будет много. можно ли это вывести в отдельную функцию, например, для компактности кода?

1 Ответ

1 голос
/ 11 июля 2020

Итак, вы можете переопределить 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. ... ...
...