JSFiddle - React, Tailwind, and code Playground

by MikeAski

HTML

<script src="https://github.com/downloads/wycats/handlebars.js/handlebars-1.0.0.beta.6.js"></script>
<script src="http://cloud.github.com/downloads/emberjs/ember.js/ember-latest.js"></script>
<script type="text/x-handlebars" data-template-name="application">
DONC
    {{outlet authentication}}
VOILA
</script>

<script type="text/x-handlebars" data-template-name="authentication">
    POUF
{{#view App.LoginFormView isVisibleBinding="user.isNotAuthenticated" }}
Username: {{view Ember.TextField valueBinding="user.loginName"}} / 
Password: {{view Ember.TextField valueBinding="user.userPassword" type="password"}}
<button class="btn" {{ action "login" }} {{bindAttr disabled="user.isNotValid"}}>Login</button>
{{/view}}

{{#view App.LoginInfoView isVisibleBinding="user.isAuthenticated" }}
You are logged in as {{user.loginName}}. Click <a {{action "logout"}}>here</a> to logout
{{/view}}
</script>

JavaScript

App = Ember.Application.create({
//  autoinit: false
});

App.User = Ember.Object.extend({
    loginName:'',
    userPassword:'',
    rememberMe:true,
    isNotValid:function(){
        return (this.get("loginName") == '') || (this.get("userPassword") == '');
    }.property('loginName', 'userPassword'),
    isAuthenticated:false,
    isNotAuthenticated:function(){
        return !this.isAuthenticated;
    }.property('isAuthenticated')
});

App.AuthenticationController = Ember.Controller.extend({
    login:function() {
        alert("loginName:"+this.user.get('loginName')+";\n"+
              "userPassword:"+this.user.get('userPassword')+";\n"+
          "rememberMe:"+this.user.get('rememberMe')+";\n");
        this.user.isAuthenticated = true;
    },
    user: App.User.create()
});
App.AuthenticationView = Ember.View.extend({
    templateName: 'authentication',
    userBinding:"App.router.authenticationController.user"
});

App.LoginFormController = Ember.Controller.extend({
    userBinding:"App.router.authenticationController.user"
});
App.LoginFormView = Ember.View.extend();

App.LoginInfoController = Ember.Controller.extend({
    userBinding:"App.router.authenticationController.user"
});
App.LoginInfoView = Ember.View.extend();

App.Router = Ember.Router.extend({
    enableLogging:true,
    root: Ember.Route.extend({
        index: Ember.Route.extend({
            route: '/',
            connectOutlets: function(router){
                router.get('applicationController').connectOutlet('authentication','authentication');
            },
            login:function(router){
                router.get('authenticationController').login();
            }
        })
    })
});