JSFiddle - React, Tailwind, and code Playground

by ppanagi

HTML

<script src="https://github.com/downloads/wycats/handlebars.js/handlebars-1.0.0.beta.6.js"></script>
<script src="https://github.com/downloads/emberjs/ember.js/ember-1.0.pre.js"></script>
<script src="http://cloud.github.com/downloads/emberjs/data/ember-data-latest.js"></script>
<script type="text/x-handlebars" data-template-name="home">
    <h1><b>Async Routing Example</b></h1>
    {{outlet}}
</script>
<script type="text/x-handlebars" data-template-name="yapp">
    <h2>Yapp: {{name}}</h2>
    {{outlet}}
</script>
<script type="text/x-handlebars" data-template-name="page">
    <h3>Page: {{name}}</h3>
</script>

CSS

div {
    text-align:center;
    margin-top:30px;
    font:20px/24px helvetica;
}

JavaScript

var App = Ember.Application.create();
App.ApplicationView = Em.View.extend({
    templateName: 'home'
});
App.ApplicationController = Em.Controller.extend();
App.YappController = Em.ObjectController.extend();
App.YappView = Em.View.extend({
    templateName: 'yapp'
});
App.PageController = Em.ObjectController.extend();
App.PageView = Em.View.extend({
    templateName: 'page'
});
App.Store = DS.Store.extend({
    revision: 4,
    adapter: Em.Object.create({
        find: function(store, type, id) {
            if (type === App.Yapp) {
                Em.run.later(function(){
                    store.load(App.Page, { id: 7, name: 'Schedule' });
                    store.load(App.Yapp, { id: id, name: 'Ember NYC' });
                }, 1500);
            } else if (type === App.Page) {
                throw "Expected page to be loaded already.";
            }
        }
    })
});
App.Yapp = DS.Model.extend({
    name: DS.attr('string')
});
App.Page = DS.Model.extend({
    name: DS.attr('string')
});

App.Router = Em.Router.extend({
    location: 'hash',
    enableLogging: true,
    root: Em.Route.extend({
        loading: Em.State.extend({}),
        yapp: Em.Route.extend({
            route: '/yapps/:yapp_id',
            deserialize: function(router, params){
                yapp = this._super(router, params);
                deferred = $.Deferred();
                yapp.one('didLoad', function(){
                    deferred.resolve(yapp);
                });
                console.log(deferred);
                return deferred.promise();
            },
            connectOutlets: function(router, yapp) {
                router.applicationController.connectOutlet('view', 'yapp', yapp);
            },
            page: Em.Route.extend({
                route: '/pages/:page_id',
                connectOutlets: function(router, page) {
                    router.yappController.connectOutlet('view', 'page', page);
                },
            })
        })
   ...