У меня есть 2 поля выбора с параметрами, связанными из хранилища данных с прокси-сервером JSONP. Мне нужно изменить значение во втором поле выбора на основе значения, выбранного в первом поле выбора. Для этого я думаю, что мне нужно изменить параметры в прокси-серверы на основе значения, выбранного в поле выбора.Sencha Touch 2.0 динамически меняет хранилище данных extraParams
Я пробовал метод .getProxy() из этого сообщения How can I change/add params on a store, но это не работает. У меня ошибка в консоли:
Uncaught TypeError: Object function() {
return this.constructor.apply(this, arguments);
} has no method 'getProxy'
См. Ниже приведенный код с пояснениями. Любые идеи, как это сделать?
Модель:
Ext.define('Providers.model.Provider', {
extend: 'Ext.data.Model',
config: {
fields: [
{
name: 'id',
type: 'int'
},
{
name: 'name',
type: 'string'
}
]
}
});
первый магазин:
Ext.define('Providers.store.ProvidersType', {
extend: 'Ext.data.Store',
config: {
model: 'Providers.model.Provider',
proxy: {
type: 'scripttag',
url : 'http://example.com/providers/service.php',
extraParams: {
action: 'provider_types',
username: 'test2',
callback: '?',
format: 'json'
},
reader: {
type: 'json',
rootProperty: 'providers'
}
},
autoLoad: true
}
});
второй магазин:
Ext.define('Providers.store.Countries', {
extend: 'Ext.data.Store',
config: {
model: 'Providers.model.Provider',
proxy: {
type: 'scripttag',
url : 'http://example.com/providers/service.php',
extraParams: {
action: 'countries',
username: 'test2',
provider_type: 14, //<--- here should be value from first selectfield
callback: '?',
format: 'json'
},
reader: {
type: 'json',
rootProperty: 'countries'
},
},
autoLoad: true
}
});
Планировка:
xtype: 'fieldset',
layout: 'vbox',
items: [
{
xtype: 'selectfield',
id: 'selectType',
cls: 'combobox',
store: 'ProvidersType',
displayField: 'name',
valueField: 'id',
listeners: {
change: function(field, value) {
if (value instanceof Ext.data.Model) {
value = value.get(field.getValueField());
}
console.log(value); //<-- get value works fine, how insert it in proxy param?
//Providers.store.Countries.getProxy().extraParams.provider_type = 10; <-- Do not work
}
}
},
{
xtype: 'selectfield',
id: 'selectCountry',
placeHolder: 'Country',
cls: 'combobox',
store: 'Countries',
displayField: 'name',
valueField: 'id'
}
]
Спасибо.
спасибо за ответ @doganerman. Но это не работает корректно, после загрузки приложения у меня есть правильное значение в первом поле select и в «newstore», после изменения selectfield у меня есть правильное измененное значение в selectfield, но перезагрузка «newstore» со старым значением. Пример: после значения загрузки приложения = 10, provider_type = 10; после значения изменения поля выбора = 14, но provider_type still = 10. – Kuzzy