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
トークン最適化のためのユーザーストーリー分析 / User Story Analysis for Token Optimization
oomatomo
0
150
秘密度ラベル初心者が第1歩でつまづかないための「設計・運用」ポイント
seafay
PRO
1
530
AIペネトレーションテスト・ セキュリティ検証「AgenticSec」紹介資料
laysakura
2
7.8k
ご挨拶「10周年を迎える共創ラボのこれまでとこれから」
iotcomjpadmin
0
160
AWS Summit の片隅で、体育座りしながらコミュニティがにぎわう理由を考えた
k_adachi_01
2
310
アラート調査向けAIエージェントの本番導入とその後/AI Agents for Alert Investigation: Production Deployment and After
taddy_919
1
290
Why is RC4 still being used?
tamaiyutaro
0
250
5分でわかる Amazon Connect_20260608
hwangbyeonghun
0
150
CVE-2026-20833_脆弱性対応とAES 化について
jukishiya
0
290
Multi-Agent並列開発を 安全に回すための技術 / Technology for Safely Multi-Agent Parallel Development
tooppoo
0
230
初めてのDatabricks勉強会
taka_aki
2
210
組織における AI-DLC 実践
askul
0
220
Featured
See All Featured
How STYLIGHT went responsive
nonsquared
100
6.2k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
400
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
380
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
190
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.9k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.5k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
2
270
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
200
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
790
Rails Girls Zürich Keynote
gr2m
96
14k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.8k
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