ExtJS Template

HTML

<link rel="stylesheet" href="//cdn.sencha.io/ext-4.2.0-gpl/resources/css/ext-all-gray.css" />
<script src="//cdn.sencha.io/ext-4.2.0-gpl/ext-all-dev.js"></script>

JavaScript

Ext.define('My.model.Author', {
    extend: 'Ext.data.Model',
    fields: [
        'name'
    ]
});

Ext.define('My.model.Comment', {
    extend: 'Ext.data.Model',
    fields: [
        'emailAddress',
        'body'
    ]
});

Ext.define('My.model.BlogPost', {
    extend: 'Ext.data.Model',
    fields: [
        'title',
        'body'
    ],
    belongsTo: [
        {
            name: 'author',
            instanceName: 'author',
            model: 'My.model.Author',
            getterName: 'getAuthor',
            setterName: 'setAuthor',
            associationKey: 'author'
        }
    ],
    hasMany: [
        {
            name: 'comments',
            model: 'My.model.Comment',
            associationKey: 'comments'
        }
    ],
    proxy: {
        type: 'ajax',
        url: 'https://dl.dropboxusercontent.com/u/1015920/Ext/blog-posts.json',
        reader: {
            type: 'json',
            root: 'data'
        }
    }
});

My.model.BlogPost.load(1, {
    success: function(record, operation) {
        console.log(record.get('title'));
        console.log(record.getAuthor().get('name'));
        console.log(record.comments().getCount());
    }
});