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...