#xml #select #sencha-touch #store
#xml #выберите #sencha-touch #Магазин
Вопрос:
Вот моя модель и хранилище,
Ext.regModel('Agent', { fields: [{ name: 'userid', type: 'int' }, { name: 'agentname', type: 'string'}] });
App.stores.agentStore = new Ext.data.Store({
model: 'Agent',
storeId: 'AgentsStoreid',
proxy: {
type: 'ajax',
url: 'https://abc123.com/wsbrightdoor.asmx/GetAgents?username=abcamp;password=123',
reader: { type: 'xml', root: 'root', record: 'salesagent' }
},
autoLoad: true
});
//App.stores.agentStore.load();
console.log(App.stores.agentStore);
Я устанавливаю это хранилище в свой selectitem следующим образом
var sel = new Ext.form.Select(
{
id: 'Myselectfield',
name: 'myagent',
label: 'Agent',
store: App.stores.agentStore,
displayField: 'agentname',
valueFiels: 'userid',
placeHolder: 'Click/touch to select options...',
});
Вот мой XML-файл, который возвращает сервер
<?xml version="1.0" encoding="utf-8"?>
<root>
<salesagent>
<userid>1</userid>
<agentname>Name1</agentname>
</salesagent>
<salesagent>
<userid>13</userid>
<agentname>Name2</agentname>
</salesagent>
</root>
Я вижу, что хранилище получает значения с веб-сервера, и я вижу объект данных со значениями agentname и userid. Мы используем Sencha touch 1.1.0. Теперь я могу видеть значения в поле выбора, которые заполняются из веб-сервиса. Когда я выбираю элемент, выбранный элемент не меняется на элемент, который я выбрал. Я вижу, что первый элемент в моем хранилище выбран. Как нам это исправить? Пожалуйста, предложите.
Ответ №1:
Документация Sencha touch настолько расплывчата. Могло бы быть лучше с несколькими примерами для каждого свойства и метода, чтобы показать, как его использовать. Вот как я исправил свою проблему. Я должен сделать это с помощью обычного запроса Jquery Ajax.
AgentsArray = new Array(); //Create an Array that saves the Agents AgentsArray.push({ text: '', value: '0' });
pushAgents = function (data, textStatus, xml_http_req)
{
//console.log(data);
/*read the agents and IDs from XML and build Array*/
$(data).find('salesagent').each(
function ()
{
var agentName = $(this).find('agentname').text();
var agentId = $(this).find('userid').text();
AgentsArray.push({ text: agentName, value: agentId }); // push the items into Array
//alert(agentName);
}
);
return AgentsArray;
}
function somethingWrong() {
AgentsArray.push('SomethingWentWrong', '0');
}
App.Agents = AgentsArray; //Save it in the array and this is specified in the Mainform.js(View).
$.ajax({
url: 'https://abc.com/def.asmx/GetAgents',
type: 'GET',
dataType: 'xml',
data: 'abc=1amp;def=1amp;username=123',
success: pushAgents,
errors: somethingWrong
});
и в MainForm.js элемент управления select выглядит следующим образом
items: [ {
xtype: 'selectfield',
id: 'selectfield',
name: 'agent',
label: 'Agent',
options: App.Agents,
placeHolder: 'Click to select options...',
}]