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
Carl Woodward
October 08, 2013
Technology
95
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
VPCセキュリティ対応の最新事情
nagisa53
1
290
仕様駆動開発、導入半年。「本当に速くなってるの?」にデータで答える / AICon2026_hirakawa
rakus_dev
0
330
AI、CDK と協働する Full TypeScript アプリケーション開発 / Full TypeScript Application with AI and CDK
geekplus_tech
2
480
現場との対話から始める “作る前に問い直す”業務改善
mochico50
2
240
Webアプリ認証の全体像 / The Big Picture of Web App Authentication
kitano_yuichi
1
430
AI工学特論: MLOps・継続的評価
asei
7
1.3k
探索・可視化・自動化を一本化 Amazon Quickでデータ活用スピードを上げる方法
koheiyoshikawa
0
180
”AIを使う” から ”AIに任せる” へ ─ 開発プロセスを再設計してAIを組織標準にするまで
cyberagentdevelopers
PRO
2
140
OpenTelemetryにおけるGoのゼロコード・コンパイル時計装について #fukuokago
quiver
0
250
SoccerMaster: A Vision Foundation Model for Soccer Understanding
kzykmyzw
0
170
“それは自分の仕事じゃない"を越えて行け
yuukiyo
1
520
AI Coding Agent時代のcdk-nagガードレール 〜組織ルールを強制CIで守り抜く設計の挑戦〜
mhrtech
3
510
Featured
See All Featured
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
910
Discover your Explorer Soul
emna__ayadi
2
1.2k
Scaling GitHub
holman
464
140k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
560
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
770
How to Talk to Developers About Accessibility
jct
2
430
Product Roadmaps are Hard
iamctodd
55
12k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
520
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Automating Front-end Workflow
addyosmani
1370
210k
Raft: Consensus for Rubyists
vanstee
141
7.6k
Exploring anti-patterns in Rails
aemeredith
3
450
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