在ExtJS中为store's代理添加头文件

Adding headers to store's proxy once in ExtJS

本文关键字:代理 添加 文件 ExtJS 中为 store      更新时间:2023-09-26

我有一个商店,我需要添加一些头到它的代理。我不想使用Ext.Ajax单例的defaultheheaders,因为它们只针对少数商店。

头使用键/值对,值来自一个变量,该变量在初始加载存储时未加载,该变量在成功登录后填充。

由于这个原因,我不能在代理或存储上使用构造函数,因为我用于头文件值的变量不可用。

我能让它工作的唯一方法是使用beforeLoad的存储。这真的是实现这个目标的最好方法吗?

这是我的商店里的监听器,我检查它是否未定义,因为它每次都被触发。

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

有谁知道更好的方法吗?

似乎不存在只触发一次的事件

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

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

一般来说,如果在'critical' store加载之后创建视图会更好。这意味着你很可能需要在应用程序主文件中将autoCreateViewport设置为false。然后在商店成功回调中手动创建它。在init()方法中钩子来完成这个任务。

示例:(伪代码)

App.js

init: function() {
            myImportantStore.load({
               success: function() {
                 // create your viewport
               }
           });
}