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
Stop! Ember Time!
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Carl Woodward
October 08, 2013
Technology
96
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Stop! Ember Time!
Carl Woodward
October 08, 2013
Other Decks in Technology
See All in Technology
AI時代のアウトプット――変わったこと、変わらないこと / Devsumi 2026 Kansai #devsumi
jnchito
0
590
形式手法特論:Hyperproperty とモデル検査 #kernelvm / Kernel VM Study Tokyo 19th
ytaka23
0
840
Oracle MCP Servers Explained
thatjeffsmith
1
540
Kiro Crew で始める マルチエージェント開発
miu_crescent
PRO
0
190
信頼性はSREだけのものじゃない
hkawaras
0
180
NANDでも描画したい!
nichica906
3
780
アクセスキー流出時の対応で再認識した攻撃側と防御側の非対称性について
kazzpapa3
0
380
ハッカソンで入賞した話 @ Findy LT
asari194617
0
1.5k
コミュニティから始まった農業IoTとの7年間 ——人との関わりが教えてくれたこと
peacemaker07
0
120
Dylib Hijacking on macOS: Dead or Alive?
patrickwardle
0
120
AIで変わるエンジニアの働き方(仮)
naoinaoi
0
570
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
6
77k
Featured
See All Featured
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
790
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
430
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
220
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
630
Facilitating Awesome Meetings
lara
57
7.1k
Thoughts on Productivity
jonyablonski
76
5.3k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
290
Designing for humans not robots
tammielis
254
26k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
560
Mind Mapping
helmedeiros
PRO
1
330
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Rails Girls Zürich Keynote
gr2m
96
14k
Transcript
Stop! Ember Time! Wednesday, 9 October 13
Carl Woodward Wednesday, 9 October 13
@cjwoodward Wednesday, 9 October 13
Wednesday, 9 October 13
Wednesday, 9 October 13
Why Ember? Wednesday, 9 October 13
Wednesday, 9 October 13
Well structured Wednesday, 9 October 13
Data bound Wednesday, 9 October 13
Fast Wednesday, 9 October 13
Javascript MVC framework Wednesday, 9 October 13
Wednesday, 9 October 13
Route Model Controller View Template User Wednesday, 9 October 13
Route Router Find a model Before model Wednesday, 9 October
13
WeightsProgram.ExerciseRoute = Ember.Route.extend model: (params) -‐>
WeightsProgram.Exercise.find params["exercise_id"] * Using Ember Model Wednesday, 9 October 13
Controller Route Actions from UI Wednesday, 9 October 13
WeightsProgram.AuthenticatedExerciseController = Ember.ObjectController.extend actions: saveReps:
-‐> @get("content").set("current_max", @get("content").get("new_max")) @get("content").save() @transitionToRoute("authenticated.week", @get("content.week")) * Using Ember Model Wednesday, 9 October 13
View Controller Element events didInsertElement Wednesday, 9 October 13
WeightsProgram.AuthenticatedWeekView = Ember.View.extend() Wednesday, 9 October 13
Template View {{#link-to “week” week}}Week Link{{/link-to}} <form {{action "saveReps" on="submit"}}>
<h3>{{movement.name}}</h3> Wednesday, 9 October 13
Templating Wednesday, 9 October 13
Handlebars or Emblem Wednesday, 9 October 13
if isEditing form.post-‐form role="form" submit="create" .form-‐group
button.btn.btn-‐primary click="stopEditing" View Emblem Wednesday, 9 October 13
<h2>Week {{number}}</h2> <div class="menu"> {{#each exercise in exercises}}
<h3> {{#link-‐to "authenticated.exercise" exercise}} {{exercise.movement.name}} {{/link-‐to}} </h3> {{/each}} </div> Handlebars Wednesday, 9 October 13
Application layout Wednesday, 9 October 13
<div class="container work"> <div class="row"> <div
class="col-‐sm-‐12"> <h1>Strength Program</h1> </div> </div> <div class="row"> <div class="col-‐sm-‐12"> {{ outlet }} </div> </div> </div> Handlebars Wednesday, 9 October 13
outlet is like yield in rails views {{outlet}} Wednesday, 9
October 13
Persistence Wednesday, 9 October 13
Ember Data or Ember Model Wednesday, 9 October 13
Ember Model = customisable Wednesday, 9 October 13
Wednesday, 9 October 13
WeightsProgram.Exercise = Ember.Model.extend id: Ember.attr() reps: Ember.attr()
initial_max_value: Ember.attr() movement: Ember.belongsTo("WeightsProgram.Movement", key: "movement_id", embedded: false) accessories: Ember.hasMany("WeightsProgram.Accessory", key: "accessory_ids", embedded: false) WeightsProgram.Exercise.url = "/exercises" WeightsProgram.Exercise.adapter = Ember.RESTAdapter.create() WeightsProgram.Exercise.rootKey = "exercise" WeightsProgram.Exercise.collectionKey = "exercises" Ember Model Wednesday, 9 October 13
EmberBlog.Post = DS.Model.extend title: DS.attr("string") publishedOn: DS.attr("string")
body: DS.attr("string") Ember Data Wednesday, 9 October 13
JJ Abrams Wednesday, 9 October 13
Tips Wednesday, 9 October 13
Don’t try and preload associations Wednesday, 9 October 13
didInsertView Wednesday, 9 October 13
model.on(“didCreateRecord”) Wednesday, 9 October 13
WeightsProgram.AuthenticatedProgramController = Ember.ObjectController.extend actions: createWeek:
-‐> number = @get("weeks.lastObject.number") + 1 week = WeightsProgram.Week.create program_id: @get("id"), number: number week.on "didCreateRecord", => @get("model").reload() @transitionToRoute("authenticated.program", @get("model")) week.save() Ember Model Wednesday, 9 October 13
Computed Properties Wednesday, 9 October 13
Wednesday, 9 October 13
increase_percentage: (-‐> @get("current_max") / @get("previous_max")) -‐ 1 ).property("current_max", "previous_max")
Wednesday, 9 October 13
Include any attribute you need to create the model. E.g.
program_id Wednesday, 9 October 13
Nested routes require nested names Wednesday, 9 October 13
WeightsProgram.AuthenticatedProgramController WeightsProgram.Router.map -‐> @resource "authenticated", path: "/", -‐>
@route "program", path: "/programs/:program_id" WeightsProgram.AuthenticatedProgramView app/assets/javascripts/views/authenticated/program.hbs Wednesday, 9 October 13
Only use nested resources with nested outlets Wednesday, 9 October
13
Wednesday, 9 October 13
ember-rails works really well Wednesday, 9 October 13
jsbin Wednesday, 9 October 13
discuss.emberjs.com Read discourse source code #emberjs-‐dev Wednesday, 9 October 13
Demo Wednesday, 9 October 13