如何在函数中包装 Ajax 权限检查?

How do I wrap Ajax rights checks in a function?

我通过 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);
  }
 },
});

原来会有很多。这可以输出到一个单独的函数,例如,为了代码的紧凑性吗?

因此,您可以覆盖 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 元素(文本字段、表单、网格.. 工具栏)的基础 class。所以所有的子组件都会得到这个特性。

在下面的 fiddle 示例中,gui 子元素发出 ajax 请求并在成功时隐藏自己:false(随机)。只需重新运行 应用程序即可查看结果。

FIDDLE

当然,您必须根据需要编辑此解决方案。

该方案的缺点:

  • 你会提出很多ajax的要求,这是不好的,最好 实施一些批处理模式机制。
  • 如果组件在默认设置下是隐藏的,它将被显示,所以你也需要实现这个逻辑。 ... ...