В EXTJS-4 я не получаю данные об ассоциациях как Array Collection в Store (событие загрузки) Запись -> Data-> Property) - PullRequest
1 голос
/ 26 декабря 2011

Мне нужно одно свойство как коллекция в модели, поэтому я попробовал ассоциации, но когда я смотрю на параметр «записи» в событии загрузки магазина (Store-> Record -> Data -> Array Property), я получаю как «[object Object] ", но не как массив массивов.

когда я смотрю" raw "свойство в записи, я получаю правильную коллекцию массивов.

Т.е.

Мой код

Ext.define('MyApp.model.user.examModl', {
    extend: 'Ext.data.Model',    
    idProperty :'examId',
    hasMany: 'MyApp.model.user.examTypeModl',    
            proxy:{          
        type: 'ajax',      
         api: {
                read: 'readExam.htm'          //url   to read data from db
            },
        reader: {
            type: 'json',
            root: 'res',
             idProperty: 'examId',
            successProperty: 'success',
            totalProperty: 'totalCount'
        },
        writer: {
                type: 'json',  
                 encode: true,
                root: 'res',
                writeAllFields : true
            }
    },
     fields:[{
                    name: 'examId',
                    type: 'string'
                },
                {
                    name: 'examName',
                    type: 'string'
                },
            {
                    name: 'examTypes',//It shoud be in array
                    type: 'string'            // is there any collection type to be specified ?
                }] ,
                associations: [
        {type: 'hasMany', model: 'MyApp.model.user.examTypeModl', name: 'examTypes'}
    ]
});

Ext.define('MyApp.model.user.examTypeModl', {
    extend: 'Ext.data.Model',    
    idProperty :'examTypeId',
    belongsTo: 'examTypes',  
     fields:[{
                    name: 'examTypeId',
                    type: 'string'
                },
                {
                    name: 'examId',
                    type: 'string'
                },              
                {
                    name: 'examType',
                    type: 'string'
                },

                { name: 'active',
                    type: 'bool'

                }]    
});

Мой ответ json будет: -

{"res":[{"examId":1,"examName":"mathematics","examTypes":[{"examTypeId":1,"examId":"1","examType":"MCQ","active":true}]}],"totalCount":1,"success":true}

В моем событии загрузки магазина, когда я смотрю параметр «records»,

 records[1].data.examTypes="[object Object]"

as like object , but iam getting in raw property

 records[1].raw.examTypes  = proper array collection.

я нене знаю, где я ошибаюсь или какое-либо имущество отсутствует / неправильно назначено.

1 Ответ

1 голос
/ 27 декабря 2011

Попробуйте использовать { name: 'examTypes', type: 'auto' } в определении вашего поля. Он не конвертирует examTypes в запись, но сохраняет массив без изменений.

...