Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Ext.data.Record.create - Uncaught TypeError: Cannot read property 'items' of undefine (https://javascript.ru/forum/extjs/29523-ext-data-record-create-uncaught-typeerror-cannot-read-property-%27items%27-undefine.html)

potkin 01.07.2012 21:41

Ext.data.Record.create - Uncaught TypeError: Cannot read property 'items' of undefine
 
Добрый вечер !
Юзаю: ext-4.0.7.
Задача:
Есть на ФормПанели несколько КомбоБоксов, хочу одним запросом к серверу вытянуть все данные для этих КомбоБоксов.
Как делать: ТЫЦЬ
Проблема: Сразу же на первой строчке кода:
//Создаем record. Пригодится для "читателя" хранилища.
dsDataRecord = new Ext.data.Record.create([ // или dsDataRecord = Ext.data.Record.create
   //Пишем название свойства и мапим его
   //на второй элемент массива пришедших данных
   {name : 'data_key', mapping : 1},
   {name : 'data_name', mapping: 2}
]);

Что-то не так с Ext.data.Record.create, получаю в Хроме исключение:
1) Если БЕЗ "new"
Код:

  Uncaught TypeError: Cannot read property 'items' of undefined
2) Если с "new"
Код:

  Uncaught TypeError: Object [object Object] has no method 'substring'
Подскажите, пожалуйста )))

П.С. в статье речь шла о " ... речь пойдет о второй версии ..." Экса ...

potkin 01.07.2012 22:59

Ext.data.Record
or
Ext.data.Model

Вместо
Ext.data.Record.create

DjDiablo 01.07.2012 23:29

Насколько я знаю Ext.data.record это старое название Ext.data.Model, как минимум с 4й версии

Combobox работает со сторе а не с моделями,выходит что и модели нам объявлять не очень то и нужно.
Значит если я правильно понял то должно получится что-то вроде.
// внимание это псевдокод
Ext.Ajax.request({
            url: "test.json",
            params: {
                id: 1// какойнибудь параметр передадим вместе с запросом (если надо конечно)
            },
            success: function(response){
                 ajax=Ext.JSON.decode(response.responseText); 

                //создадим первый store (сторе можно было создать и в другом месте а данные установить loadData)              
                ds1=Ext.create('Ext.data.Store', {
                        fields: ['id', 'name'], //модели нафик ненужны
                        data : ajax.data1
                });

                //создадим второй store (сторе можно было создать и в другом месте а данные установить loadData)
                ds2=Ext.create('Ext.data.Store', {
                        fields: ['id', 'test'], //модели нафик ненужны 
                        data : ajax.data2
                });
            }


Часовой пояс GMT +3, время: 12:02.