Extjs Ext JS 4.2:添加;来源呼叫“;所有AJAX调用的参数

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

我的应用程序中有三个不同的区域可以修改小时数。它们都使用相同的网格、存储和模型(但实例不同),并调用相同的后端控制器。我正在尝试实现一种向AJAX调用添加参数的方法,这样后端就可以通过对AJAX调用使用参数来知道调用来自应用程序的哪个区域

我尝试了以下几点:

(1)覆盖
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();
请参见此处的操作:

打开“网络”选项卡以查看参数: