在ExtJS中将标题添加到存储代理一次

时间:2015-09-09 12:38:58

标签: javascript extjs extjs4 extjs5

我有一个商店,我需要在其代理中添加一些标头。我不想使用Ext.Ajax单例的defaultHeaders,因为这些仅限于几家商店。

标头使用键/值对,并且值来自最初加载存储时未加载的变量,成功登录后填充变量。

由于这个原因,我无法在代理或商店上使用构造函数,因为我用于标题值的变量是不可用的。

我能让它工作的唯一方法是使用beforeLoad商店。这真的是实现这一目标的最佳方式吗?

这是我店里的听众,我正在检查是否因为每次都被解雇而未定义。

listeners: {
    beforeload: function( store, operation, eOpts ) {
        if (this.proxy.headers === undefined) {
            this.proxy.headers = {
                'X-GType': CompA.Items.getGtype().get('type'),

有没有人知道更好的方法?

似乎不会只发生一次事件。

2 个答案:

答案 0 :(得分:1)

作为“仅触发一次事件”问题的一般答案 - 您可以将侦听器配置为在一个事件后自动取消。

listeners: { 'beforeload': { fn: function(...), single: true } }

答案 1 :(得分:0)

一般情况下,如果您在“关键”之后创建视图会更好。商店已加载。这意味着您最有可能需要在应用程序主文件中将autoCreateViewport设置为false。然后在商店成功回调中手动创建它。挂起init()方法来做到这一点。

示例:(伪代码)

App.js

B