在 ExtJS 中将 headers 添加到商店的代理一次
Adding headers to store's proxy once in ExtJS
我有一家商店,我需要向其代理添加一些 header。我不想使用 Ext.Ajax 单例的 defaultHeaders,因为它们只针对少数商店。
headers 使用键/值对,值来自一个变量,该变量在商店最初加载时未加载,该变量在成功登录后填充。
由于这个原因,我无法在代理或存储上使用构造函数,因为我用于 header 值的变量不可用。
我让它工作的唯一方法是使用商店的 beforeLoad。这真的是实现这一目标的最佳方式吗?
这是我商店中的监听器,我正在检查它是否未定义,因为它每次都会被触发。
listeners: {
beforeload: function( store, operation, eOpts ) {
if (this.proxy.headers === undefined) {
this.proxy.headers = {
'X-GType': CompA.Items.getGtype().get('type'),
有谁知道更好的方法吗?
似乎没有只触发一次的事件。
一般来说,如果在加载 'critical' 商店后创建视图会更好。这意味着您很可能需要在应用程序主文件中将 autoCreateViewport 设置为 false。然后在store中手动创建成功回调。挂钩 init() 方法来执行此操作。
示例:(伪代码)
App.js
init: function() {
myImportantStore.load({
success: function() {
// create your viewport
}
});
}
作为 "events only firing once" 问题的一般答案 - 您可以将侦听器配置为在一个事件后自动取消侦听。
listeners: {
'beforeload': {
fn: function(...),
single: true
}
}
我有一家商店,我需要向其代理添加一些 header。我不想使用 Ext.Ajax 单例的 defaultHeaders,因为它们只针对少数商店。
headers 使用键/值对,值来自一个变量,该变量在商店最初加载时未加载,该变量在成功登录后填充。
由于这个原因,我无法在代理或存储上使用构造函数,因为我用于 header 值的变量不可用。
我让它工作的唯一方法是使用商店的 beforeLoad。这真的是实现这一目标的最佳方式吗?
这是我商店中的监听器,我正在检查它是否未定义,因为它每次都会被触发。
listeners: {
beforeload: function( store, operation, eOpts ) {
if (this.proxy.headers === undefined) {
this.proxy.headers = {
'X-GType': CompA.Items.getGtype().get('type'),
有谁知道更好的方法吗?
似乎没有只触发一次的事件。
一般来说,如果在加载 'critical' 商店后创建视图会更好。这意味着您很可能需要在应用程序主文件中将 autoCreateViewport 设置为 false。然后在store中手动创建成功回调。挂钩 init() 方法来执行此操作。
示例:(伪代码)
App.js
init: function() {
myImportantStore.load({
success: function() {
// create your viewport
}
});
}
作为 "events only firing once" 问题的一般答案 - 您可以将侦听器配置为在一个事件后自动取消侦听。
listeners: {
'beforeload': {
fn: function(...),
single: true
}
}