Ember Latest

The latest build of Ember.

by Abdull

HTML

<script src="http://builds.emberjs.com/handlebars-1.0.0.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/ember.js/1.3.1/ember.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/ember-data.js/1.0.0-beta.6/ember-data.js"></script>
<script type="text/x-handlebars" data-template-name="application">
  <h1>ember - Object Controller inheritence test</h1>
  <ul>
    <li>{{#link-to "normal"}}Go to NormalRoute{{/link-to}}</li>
    <li>{{#link-to "extended"}}Go to ExtendedRoute{{/link-to}}</li>
  </ul>
  {{outlet}}
</script>

<script type="text/x-handlebars" data-template-name="index">
  Select a route
</script>

<script type="text/x-handlebars" data-template-name="normal">
  <h2>Normal Route: {{message}}</h2>
  <h2>Root message: {{rootMessage}}</h2>
  <ul>
      <li>{{firstName}} {{lastName}}</li>
  </ul>
  {{mutate-button buttonMessage=modelFirstName action="uppercase"}}
</script>

<script type="text/x-handlebars" data-template-name="extended">
  <h2>Extended Route: {{message}}</h2>
  <h2>Root message: {{rootMessage}}</h2>
  <ul>
      <li>{{firstName}} {{lastName}}</li>
  </ul>
  {{mutate-button buttonMessage=modelFirstName action="uppercase"}}
  {{mutate-button buttonMessage=modelFirstName action="lowercase"}}
</script>

<script type="text/x-handlebars" id="components/mutate-button">

    <button {{action "trigger"}}>{{buttonMessage}}</button>
</script>

JavaScript

App = Ember.Application.create({});

App.Person = DS.Model.extend({
    firstName: DS.attr("string"),
    lastName: DS.attr("string"),
});

App.Router.map(function () {
    this.resource("normal");
    this.resource("extended");
});

App.NormalRoute = Ember.Route.extend({
    model: function () {
        var a = this.store.createRecord("person");
        a.set("firstName", "Foo");
        a.set("lastName", "Bar");

        return a;
    }
});

App.ExtendedRoute = Ember.Route.extend({
    model: function () {
        var a = this.store.createRecord("person");
        a.set("firstName", "Foo");
        a.set("lastName", "Bar");

        return a;
    }
});

App.NormalController = Ember.ObjectController.extend({
    rootMessage: "This is a message from NormalController",
    message: "This is NormalController",
    init: function() {
      console.log("initializing NormalController");  
    },
    
    modelFirstName: function() {
      console.log("Inside NormalController's someComputedString");
      return "Change " + this.get("model.firstName");
    }.property("model.firstName"),
    
    actions: {
        uppercase: function () {
            var model = this.get("model");
            var firstName = model.get("firstName");
            var modifiedFirstName = firstName.toUpperCase();
            model.set("firstName", modifiedFirstName);
        } //uppercase action
    } //actions hash
}); //NormalController

App.ExtendedController = App.NormalController.extend({
    message: "This is ExtendedController",
    init: function() {
      this._super();
      console.log("initializing ExtendedController");  
    },
    actions: {
        lowercase: function () {
            var model = this.get("model");
            var firstName = model.get("firstName");
            var modifiedFirstName = firstName.toLowerCase();
            model.set("firstName", modifiedFirstName);            
        } //lowercase action
    } //actions hash
});...