Extjs Ext JS 4.2:添加;来源呼叫“;所有AJAX调用的参数
我的应用程序中有三个不同的区域可以修改小时数。它们都使用相同的网格、存储和模型(但实例不同),并调用相同的后端控制器。我正在尝试实现一种向AJAX调用添加参数的方法,这样后端就可以通过对AJAX调用使用参数来知道调用来自应用程序的哪个区域 我尝试了以下几点: (1)覆盖Extjs Ext JS 4.2:添加;来源呼叫“;所有AJAX调用的参数,extjs,extjs4.2,Extjs,Extjs4.2,我的应用程序中有三个不同的区域可以修改小时数。它们都使用相同的网格、存储和模型(但实例不同),并调用相同的后端控制器。我正在尝试实现一种向AJAX调用添加参数的方法,这样后端就可以通过对AJAX调用使用参数来知道调用来自应用程序的哪个区域 我尝试了以下几点: (1)覆盖Ext.data.Connection Ext.data.Connection.override({ request: function(options){ var me = this; if(!op
Ext.data.Connection
Ext.data.Connection.override({
request: function(options){
var me = this;
if(!options.params)
options.params = {};
options.params.location = 'location 1';
return me.callOverridden(arguments);
}});
结果:我想不出一种方法来找到进行调用的模块
(2)将以下内容添加到控制器的控制器初始化
Ext.Ajax.on('beforerequest', function(conn, options) {
if(!options.params)
options.params = {};
options.params.location = "location 1";
});
结果:每次呼叫都发送相同的位置,即使是不同的区域
考虑到您使用的是同一个存储但不同的实例,最简单的方法是仅使用同步的存储方法。您必须在存储上定义代理,而不是模型,然后您可以在每个实例上轻松添加一个特殊的
extraParam
:
Ext.define('MyStore', {
extend: 'Ext.data.Store',
proxy: {
type: 'ajax'
url: 'test.json'
}
});
var instance1 = Ext.create('MyStore');
var instance2 = Ext.create('MyStore');
var instance3 = Ext.create('MyStore');
instance1.getProxy().setExtraParam('source', 'instance1');
instance2.getProxy().setExtraParam('source', 'instance2');
instance3.getProxy().setExtraParam('source', 'instance3');
instance1.load();
instance2.load();
instance3.load();
和同步:
instance1.getAt(0).set('text', 'testinstance1');
instance2.getAt(0).set('text', 'testinstance2');
instance3.getAt(0).set('text', 'testinstance3');
instance1.sync();
instance2.sync();
instance3.sync();
请参见此处的操作:
打开“网络”选项卡以查看参数: