Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Проблемы с association (https://javascript.ru/forum/extjs/65504-problemy-s-association.html)

Capito882 22.10.2016 19:08

Проблемы с association
 
Всем привет. Понадобилось отображать данные в гриде из связанного стор/модели.
Делаю все по мануалу, пробовал и reference у поля и hasOne у модели.

Подскажите пожалуйста, как это правильно реализовать.

Вот фидл с примером: https://fiddle.sencha.com/#fiddle/1j1e

Или код, кому не охото на фидл ходить:

Ext.application({
    name : 'Fiddle',

    launch : function() {
        
        Ext.define('Fiddle.model.Base', {
        	extend: 'Ext.data.Model',
            schema: {
                namespace: 'Fiddle.model'
            }
        });
        
        Ext.define('Fiddle.model.Users', {
            extend: 'Fiddle.model.Base',
            fields: [
                { type: 'int', name: 'id' },
                { type: 'string', name: 'fullName' }                
            ]
        });
        
        Ext.define('Fiddle.model.UsersCount', {
			extend: 'Fiddle.model.Base',
            fields: [
                { type: 'int', name: 'id',
                	reference: {
                        type: 'Users',
                        role: 'user'
                    }
                },
                { type: 'int', name: 'count' }                
            ],            
            hasOne: {
                model: 'Fiddle.model.Users',
                name: 'user',
                foreginKey: 'id'
            }
        });
                                
        Ext.define('Fiddle.store.Users', {
			extend: 'Ext.data.Store',
            model: 'Fiddle.model.Users',
            data: [
                { id: 1, fullName: 'Leonardo' },
                { id: 2, fullName: 'Donatello' },
                { id: 3, fullName: 'Raphael' }
            ]
        });
        
        Ext.define('Fiddle.store.UsersCount', {
			extend: 'Ext.data.Store',
            model: 'Fiddle.model.UsersCount',
            data: [
                { id: 1, count: 150 },
                { id: 2, count: 320 }
            ]
        });
        
        
        Ext.create('Ext.grid.Panel', {
            renderTo: Ext.getBody(),
            store: new Fiddle.store.UsersCount,
            columns: {
                items: [
                    { text: 'Id', dataIndex: 'id' },
                    { text: 'FullName', dataIndex: 'user.fullName' },
                    { text: 'Count', dataIndex: 'count' }
                ]
            }
        });
        
        
        var usersCount = new Fiddle.store.UsersCount();
        var users = new Fiddle.store.Users();
        
        console.log(usersCount.first().getUser());
        
        
    }
});


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