Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Getting started with Ember.js
Search
Matt Delves
August 29, 2013
Programming
140
0
Share
Getting started with Ember.js
Lightning talk given on Thursday 29th of August 2013 at the Melbourne Ruby on Rails meetup.
Matt Delves
August 29, 2013
Other Decks in Programming
See All in Programming
PHP でエミュレータを自作して Ubuntu を動かそう
m3m0r7
PRO
2
180
의존성 주입과 모듈화
fornewid
0
130
Codex CLIのSubagentsによる並列API実装 / Parallel API Implementation with Codex CLI Subagents
takatty
2
890
PDI: Como Alavancar Sua Carreira e Seu Negócio
marcelgsantos
0
120
forteeの改修から振り返るPHPerKaigi 2026
muno92
PRO
3
270
CDK Deployのための ”反響定位”
watany
4
710
レガシーPHP転生 〜父がドメインエキスパートだったのでDDD+Claude Codeでチート開発します〜
panda_program
0
710
10 Tips of AWS ~Gen AI on AWS~
licux
5
330
安いハードウェアでVulkan
fadis
1
960
Codex CLI でつくる、Issue から merge までの開発フロー
amata1219
0
350
瑠璃の宝石に学ぶ技術の声の聴き方 / 【劇場版】アニメから得た学びを発表会2026 #エンジニアニメ
mazrean
0
240
PHP 7.4でもOpenTelemetryゼロコード計装がしたい! / PHPerKaigi 2026
arthur1
1
570
Featured
See All Featured
Agile that works and the tools we love
rasmusluckow
331
21k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
510
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
2.7k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
350
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
98
Git: the NoSQL Database
bkeepers
PRO
432
67k
4 Signs Your Business is Dying
shpigford
187
22k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
440
How GitHub (no longer) Works
holman
316
150k
Rails Girls Zürich Keynote
gr2m
96
14k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
27
3.4k
Transcript
emberjs.com Friday, 30 August 13
What is it? Friday, 30 August 13
A framework for creating ambitious web applications Friday, 30 August
13
Do we need another framework? Friday, 30 August 13
Yes Friday, 30 August 13
Client side Friday, 30 August 13
Templates Friday, 30 August 13
<div class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar-inner"> <div class="container"> <button type="button"
class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <span class="brand">{{#linkTo 'index'}}Second Line{{/linkTo}}</span> <div class="nav-collapse collapse"> <ul class="nav"> <li {{bindAttr class="isVenues:active"}}>{{#linkTo 'venues'}}Venues{{/linkTo}}</li> <li {{bindAttr class="isBands:active"}}>{{#linkTo 'bands'}}Bands{{/linkTo}}</li> <li {{bindAttr class="isGigs:active"}}>{{#linkTo 'gigs'}}Gigs{{/linkTo}}</li> <li {{bindAttr class="isUsers:active"}}>{{#linkTo 'users'}}Users{{/linkTo}}</li> </ul> {{view Secondline.AuthView}} </div><!--/.nav-collapse --> </div> </div> </div> <div class="container"> <!-- Main hero unit for a primary marketing message or call to action --> <div class="hero-unit"> {{outlet}} </div> <hr> <footer> <p>© Reformed Software 2013</p> </footer> </div> <!-- /container --> Friday, 30 August 13
Routes Friday, 30 August 13
Secondline.Router.reopen location: 'history' rootURL: '/' Secondline.Router.map (match)-> @resource 'venues', ->
@route 'show', path: '/:venue_id' @resource 'gigs', -> @route 'show', path: '/:gig_id' @resource 'bands', -> @route 'show', path: '/:band_id' @resource 'users', -> @route 'show', path: '/:user_id' Secondline.IndexRoute = Ember.Route.extend setupController: (controller, model) -> @controllerFor('application').set('currentRoute', 'index') Secondline.VenuesRoute = Ember.Route.extend model: -> Secondline.Venue.find() setupController: (controller, model) -> @controllerFor('application').set('currentRoute', 'venues') Friday, 30 August 13
Models Friday, 30 August 13
DS.RESTAdapter.reopen namespace: "api/v1" Secondline.Store = DS.Store.extend adapter: DS.RESTAdapter.create() Friday, 30
August 13
Secondline.Venue = DS.Model.extend({ name: DS.attr('string'), address: DS.attr('string'), website: DS.attr('string'), location:
DS.attr('string') }); Friday, 30 August 13
Controllers Friday, 30 August 13
App.SongsController = Ember.ArrayController.extend({ longSongCount: function() { var longSongs = this.filter(function(song)
{ return song.get('duration') > 30; }); return longSongs.get('length'); }.property('@each.duration') }); Friday, 30 August 13
Talking to your rails app Friday, 30 August 13
bower bower.io Friday, 30 August 13
brew install node Friday, 30 August 13
npm install -g bower Friday, 30 August 13
{ "directory" : "vendor/assets/components" } your_rails_app/.bowerrc Friday, 30 August 13
bower init Friday, 30 August 13
bower install --save ember Friday, 30 August 13
application.js //= require handlebars/handlebars //= require ember/ember Friday, 30 August
13
gem 'handlebars_assets' Gemfile Friday, 30 August 13
JSON serializers Friday, 30 August 13
Gemfile gem 'active_model_serializers' Friday, 30 August 13
class VenueSerializer < ActiveModel::Serializer attributes :id, :name, :address, :website, :location,
:longitude, :latitude end Friday, 30 August 13
I like beer! Friday, 30 August 13
@mattdelves Friday, 30 August 13