JSFiddle - React, Tailwind, and code Playground

HTML

<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/handlebars.js/1.3.0/handlebars.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/ember.js/1.6.0/ember.min.js"></script>
<div id="container">
        
</div>

<!-- Application Template -->
<script type="text/x-handlebars" data-template-name="application">        
    {{outlet}}
</script>

<!-- Index Template -->
<script type="text/x-handlebars" data-template-name="index">
    {{#link-to 'listings'}}Go to listings{{/link-to}}
    <br />
    {{#link-to 'contacts'}}Go to contacts{{/link-to}}
</script>

<!-- Listings Template -->
<script type="text/x-handlebars" data-template-name="listings">
    This is the listings template
    <br />
    {{#each listing in controller.listings}}
    {{listing.propertyCode}}
    {{/each}}
    <hr />
    And these are the contacts
    {{#each contact in controller.contacts}}
    <div class="contact">
        {{contact.firstName}} 
        {{contact.lastName}}
    </div>
    <br />
    {{/each}}
</script>

JavaScript

/* app.js */
window.CRM = Ember.Application.create({
	LOG_TRANSITIONS: true,
	LOG_BINDINGS: true,	
	debugMode: true,
	rootElement: $('#container')
});

/* router.js */
CRM.Router.map(function() {
	this.resource('listings');
    this.resource('contacts');
});

/* Routes */
CRM.ContactsRoute = Ember.Route.extend({
    model: function() {
        var promises = {
            contacts: Ember.RSVP.resolve(CRM.ContactsModel.getAllContacts())
        };
        
        Ember.RSVP.hash(promises).then(function(hash) {
            console.log(hash);
            return hash;
        });
    } 
});

CRM.ListingsRoute = Ember.Route.extend({
    model: function() {
        var promises = {
            listings: Ember.RSVP.resolve(CRM.ListingsModel.getAllListings()),
            contacts: Ember.RSVP.resolve(CRM.ContactsModel.getAllContacts())
        };
        
        Ember.RSVP.hash(promises).then(function(hash) {
            console.log(hash);
            return hash;
        });
    } 
});

/* Contacts Model */
CRM.ContactsModel = Ember.Object.extend();
CRM.ContactsModel.reopenClass({
    allContacts: [],    
    getAllContacts: function() {
        var promise = Ember.Deferred.create();        
        var contacts = [
            {
                id: 1,
                firstName: "Buzz",
                lastName: "Aldrin"
            },
            {
                id: 2,
                firstName: "Neil",
                lastName: "Armstrong"
            }
        ];
        
        /* Async call to resolve promise */
   		setTimeout(function() {
            contacts.forEach(function(contact) {
                 var model = CRM.ContactsModel.create(contact);
                 CRM.ContactsModel.allContacts.addObject(model);                                
            });                                    
            promise.resolve(CRM.ContactsModel.allContacts);            
        }, 300); 
        
        return promise;
    }
});

/* Listings Model...