Sencha Touch: получение данных JSON из хранилища данных в поле выбора - PullRequest
1 голос
/ 06 октября 2011

Я с трудом пытался заставить мое поле выбора отобразить данные моего шаблона.

Мой TemplateStore выглядит следующим образом:

Ext.regModel('tempItems', {
   fields: [
       { name: 'Name', type: 'string' }
   ]
});

Ext.regStore('TempStore', {
   model: 'tempItems',
   autoLoad: true,
   proxy: {
      type: 'ajax',
      url: 'http://localhost:56132/Service.asmx/GetTemplateModels',
      reader: {
         type: 'json',
         root: 'd'
      }
   }
});

Код поля выбора:

xtype: 'selectfield',
name: 'template',
style: 'background-color: inherit; margin-left: 8px',
store: 'TempStore',
displayField: 'Name',
valueField: 'Name'

JSON возвращают данные:

"{"d":[{"__type":"SenchaTouchProblem.TemplateModel","Name":"Test 1","id":1},{"__type":"SenchaTouchProblem.TemplateModel","Name":"Test 2","id":2},{"__type":"SenchaTouchProblem.TemplateModel","Name":"Test 3","id":3},{"__type":"SenchaTouchProblem.TemplateModel","Name":"Test 4","id":4},{"__type":"SenchaTouchProblem.TemplateModel","Name":"Test 5","id":5}]}"

Любая помощь или указатели будут потрясающими!

Я загружаю пример проекта, показывающий мою проблему здесь: http://www.vbninja.com/SenchaTouchProblem.zip

Спасибо, Райан

1 Ответ

0 голосов
/ 10 октября 2011

Обновление:

После проверки вашего кода у вас есть несколько ошибок.Сначала вы не используете json, но xml, так что ваш читатель неверен, а затем у вас есть опечатка в параметре конфигурации автозагрузки, это должна быть автозагрузка (обратите внимание на заглавную букву L, это было трудно обнаружить, кстати :)), в любом случае попробуйтеэто:

App.stores.tempStore = new Ext.data.Store({
    model: 'tempItems',
    proxy: {
        type: 'ajax',
        url: '/Service.asmx/GetTemplateModels',
        reader: {
            type: 'xml',
            record: 'TemplateModel'
        },
        actionMethods: {
            create: 'POST',
            read: 'POST',
            update: 'PUT',
            destroy: 'DELETE'
        }
    },
    autoLoad: true
});
...