JSFiddle - React, Tailwind, and code Playground
HTML
<link rel="stylesheet" type="text/css" href="//cdn.sencha.io/ext-4.1.0-gpl/resources/css/ext-all-debug.css"
/>
JavaScript
Ext.define('Usuario', {
extend: 'Ext.data.Model',
fields: ['id', 'nome'],
hasMany: { model: 'Telefone', name: 'telefones' },
hasOne: { model: 'Endereco', name: 'endereco'}
});
Ext.define('Endereco', {
extend: 'Ext.data.Model',
fields: ['id', 'logradouro', 'endereco', 'numero', 'cidade', 'estado', 'usuario_id']
});
Ext.define('Telefone', {
extend: 'Ext.data.Model',
fields: ['id', 'ddd', 'numero', 'usuario_id']
});
var data = {
"success": "true",
"data": [
{
"id": 1,
"nome": "Maria",
"telefones": [
{
"id": 1,
"ddd": 11,
"numero": 33445566
},
{
"id": 2,
"ddd": 12,
"numero": 988887777
}
],
"endereco": {
"id": 1,
"logradouro": "Rua",
"endereco": "Santa Rosa",
"numero": 6
}
}
]
};
var store = Ext.create('Ext.data.Store', {
model: "Usuario",
autoLoad: true,
data: data,
proxy: {
type: 'memory',
reader: {
type: 'json',
root: 'data',
successProperty: 'success'
}
}
});
Ext.create('Ext.grid.Panel', {
title: 'Usuários',
store: store,
columns: [{
text: 'Nome',
dataIndex: 'nome'
},{
text: 'Telefones',
renderer: function (val, meta, record) {
var tel = '';
record.telefones().each(function(telRecord, index, count) {
if(tel.length>0) tel = tel + '; '
tel = tel + '(' + telRecord.get('ddd') + ') ' + telRecord.get('numero');
});
return tel;
}
},{
text: 'Endereço',
renderer: function (val, meta, record) {
var obj = record.getEndereco().data;
var...