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
94
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
2026 TECHFRESH 畢業分享會 - AI-Native 重塑軟體工程與虛擬講師
line_developers_tw
PRO
0
1.3k
FPC(フレキシブル)基板にZephyr実装してみた。
iotengineer22
0
130
PostgreSQL 19 新機能概要 OSC Hokkaido 2026
nori_shinoda
0
180
[チョークトーク資料]AWS DevOps Agent を使いこなす / AWS Dev Ops Agent Chalk Talk AWS Summit Japan 2026
kinunori
3
620
OTel × Datadog で 「AI活用」を計測し、改善に繋げる
shihochan
2
450
サイバーエージェントにおけるAI推進戦略と変革への取り組み
shotatsuge
0
230
螺旋型キャリアの生存戦略 / kinoko-conf2026
rakus_dev
0
100
MUSUBI 田中裕一『AIと共に行う「しごとのリデザイン」- スモールバックオフィス編』AI Ops Lab #4
musubi
0
280
ザ・データベース、MySQL ~ OSC 2026 Sendai ~
sakaik
0
150
SONiC Scale-Up Working Group から探る Scale-UpやUltraEthernet機能の実装方法
ebiken
PRO
2
420
IaC コードを資産へ:AWS CDK 社内ライブラリと横断展開 / aws-summit-japan-2026
gotok365
9
1.3k
Oracle Cloud Infrastructure:2026年6月度サービス・アップデート
oracle4engineer
PRO
0
150
Featured
See All Featured
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
180
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Marketing to machines
jonoalderson
1
5.5k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
Building an army of robots
kneath
306
46k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
330
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
950
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
200
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
1
210
How to Talk to Developers About Accessibility
jct
2
240
The Art of Programming - Codeland 2020
erikaheidi
57
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