Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introduction to Ember.js

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

Introduction to Ember.js

Avatar for Paulius Norkus

Paulius Norkus

October 23, 2013
Tweet

More Decks by Paulius Norkus

Other Decks in Programming

Transcript

  1. What is Ember.js • A framework for creating ambitious web

    applications • Based on MVC • Auto-Updating DOM • Conventions over configuration • Dependencies: • jQuery • Handelbars.js
  2. Classes and Instances App.Person = Ember.Object.extend({ say: function (thing) {

    var name = this.get("name"); alert(name + " says: " + thing); } }); App.Soldier = App.Person.extend({ say: function(thing){ this._super.say(thing + ", sir!"); } }); var soldier = App.Soldier.create({ name: "Ryan" }); soldier.say("Yes"); // alerts "Ryan says: Yes, sir!"
  3. Computed Properties App.Person = Ember.Object.extend({ firstName: null, lastName: null, fullName:

    function (){ return this.get("firstName") + " " + this.get("lastName"); }.property("firstName", "lastName") }); var person = App.Person.create({ firstName: "Paulius", lastName: "Norkus" }); person.get("fullName"); // "Paulius Norkus"
  4. Bindings App.wife = Ember.Object.create({ householdIncome: 80000 }); App.husband = Ember.Object.create({

    houseboldIncomeBinding: "App.wife.householdIncome" }); App.husband.get("householdIncome"); // 80000 //Someone get raise. App.husband.set("householdIncome", 90000); App.wife.get("householdIncome"); // 90000
  5. Observers App.Person = Ember.Object.extend({ firstName: null, lastName: null, fullName: function

    () { return this.get("firstName") + " " + this.get("lastName"); }.property("firstName", "lastName"), fullNameDidChange: function () { alert("Changed!"); }.observes("fullName") }); var person = App.Person.create({ firstName: "Paulius", lastName: "Norkus" }); person.set("firstName", "Jonas"); // alerts "Changed!"
  6. Templates <script type="text/x-handlebars" id="posts"> <h1>{{categoryName}}</h1> <h2>Posts:</h2> <ul> {{#each post in

    posts}} <li>{{post.title}}</li> {{else}} <p>No posts yet.</p> {{/each}} </ul> </script> Uses Handelbars.js templates with Ember.js helpers