Конфигурация extraParams прокси НЕ привязана. Единственный стандартный способ привязки данных к запросу магазина - через фильтры. Может показаться, что extraParams является привязываемым, так как используется первое значение. Это работает только один раз, любые изменения связанного значения после этого не регистрируются. Использование удаленных фильтров - это решение:
vehicleliststore: {
model: 'packagename.model.Vehicle',
proxy: {
type: 'ajax',
url: Ext.getResourcePath('php/overview/vehicle.php', null, 'packagename'),
reader: AIIC.Global.defaultProxyReader,
},
autoLoad: true,
remoteFilter: true,
filters:[{
property: 'personid',
value: '{personId}'
}],
}
Это прекрасно работает, пока вы не захотите использовать удаленный фильтр для реальной фильтрации чего-либо. Чтобы преодолеть эту проблему, сделайте привязку extraParams записав 2 переопределения. Один для магазина и один для ajax прокси. Конфигурация loadonextraparamschange является необязательной.
Ext.define('overrides.data.proxy.Ajax', {
override: 'Ext.data.proxy.Ajax',
mixins :
{
observable : 'Ext.mixin.Observable'
},
constructor : function(config){
// do all the constructor stuff of the parent..
this.callParent(arguments);
// now do the extended version constructor stuff...
this.mixins.observable.constructor.call(this, config);
},
updateExtraParams : function(newValue, oldValue){
// when keys change, fire event 'keyupdates'
//console.log('updateExtraParams');
this.fireEvent('extraparamsupdated', oldValue, newValue);
},
});
И переопределение для хранилища ...
Ext.define('overrides.data.Store', {
override: 'Ext.data.Store',
mixins :
{
observable : 'Ext.mixin.Observable'
},
config: {
loadonextraparamschange : true,
},
constructor : function(config){
var me = this;
me.callParent(arguments);
me.initConfig(config);
// listen to proxy event 'keyupdated' and then do reload
me.getProxy().on('extraparamsupdated', this.onExtraParams , me);
},
onExtraParams: function(extraParams){
if( this.getLoadonextraparamschange() ) this.reload();
}
});