Вы должны будете назначить его в обратном вызове как конфигурацию store.load
, потому что, когда вы назначаете его сразу, хранилище не содержит никаких данных. Как то так:
var txtEP = new Ext.form.ComboBox({
renderTo: "txtEP",
fieldLabel: 'End Point',
triggerAction: "all",
forceSelection: true,
mode:'local',
autoScroll: true,
allowBlank: false,
autoShow: true,
typeAhead:true,
store: genres,
valueField:'pincode',
displayField:'pincode',
emptyText:'Select a Start Point',
selectOnFocus:true,
listeners : {
'select' : function(){
var selVal = this.getValue();
store.load({
url:'./genres1.php',
params: {pincode: selVal},
callback: function(records) {
endpt = records; // here is where it is assigned
}
});
}
}
});
Поймите также, что «endpt» теперь будет содержать массив объектов Ext.data.Model, так что вы можете использовать методы, указанные здесь , чтобы извлечь из них любые нужные вам значения .
Чтобы ответить на ваш комментарий:
Ext.data.Model имеет метод get
. Вы передаете ему имя поля, с которым хотите получить значения. В вашем случае вы упомянули где-то, что /genres.php
возвращает два значения, если данные возвращаются как одна запись с двумя разными столбцами, например:
Заголовок столбца: | значение1 | значение2
строка 1: | 'data1' | 'Data2'
Вы можете назначить два возвращаемых значения данных переменным в вашей функции обратного вызова, например, например, вы назвали свои переменные firstValue
и secondValue
:
firstValue = endpt[0].get('value1');
secondValue = endpt[0].get('value2');
Если вместо этого ваш /genres.php
возвращает данные в виде двух разных строк с одним заголовком столбца, например:
Заголовок столбца: значение
строка 1: 'data1'
строка 2: 'data2'
Вы можете назначить данные переменным следующим образом:
firstValue = endpt[0].get('value');
secondValue = endpt[1].get('value');