Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
AngularJSのご紹介
Search
tmaeda
July 27, 2013
Programming
6.6k
12
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AngularJSのご紹介
tmaeda
July 27, 2013
More Decks by tmaeda
See All by tmaeda
アクターモデルの話
tmaedax
7
1.8k
Jupyter(主にnotebook)のご紹介
tmaedax
1
1.4k
VoiceText Web APIでのGolang利用事例のご紹介
tmaedax
2
2.3k
それ NArray でできるよ
tmaedax
18
11k
静的型付き関数型言語のススメ
tmaedax
3
1.6k
Other Decks in Programming
See All in Programming
【高い買い物LT会】初任給で話題の国産フィジカルAIを買った話
akagami
PRO
0
160
20260914 AIエージェント時代のPlatform Engineering LLM基盤とプロダクトの責務境界線
kanfab1
6
1.9k
Vue Fes Japan 2026 タイムテーブル徹底解説
448jp
0
130
Kiroで創り、AgentCoreで繋ぐ!AWSで実践する「AI-DLC」から「AIエージェント統合」までの最新地図
licux
4
680
新卒PdEのリアル
ryu1013
1
500
大喜利で理解するLLM as a Judge / Understanding LLM-as-a-Judge through Ogiri
rockname
0
100
SONY CISC-NEWS NWS-1750 + NWB-225 フレームバッファの NetBSD/news68k ドライバ実装 / OSC2026Hiroshima
tsutsui
0
110
モデルのリファクタリングが難しいと思ったら、そもそも複雑だったのはビジネス仕様だった ? / is-the-business-domain-the-real-complexity
hatsu38
0
240
型解析で実現する Go の言語内 DSL / Conference に Go! タイムテーブルの歩き方 for Gophers
mazrean
0
150
JPUG勉強会 OSSデータベースの内部構造を理解しよう(第2回)
oga5
0
220
XHTMLが残したもの
yosuke_furukawa
PRO
2
800
モジュールの視点からSwiftを読み解く #iosdc
s_shimotori
0
170
Featured
See All Featured
Game over? The fight for quality and originality in the time of robots
wayneb77
1
280
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
A Modern Web Designer's Workflow
chriscoyier
699
190k
Facilitating Awesome Meetings
lara
57
7.1k
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.1k
Build your cross-platform service in a week with App Engine
jlugia
234
19k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
250
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
700
How STYLIGHT went responsive
nonsquared
100
6.3k
Transcript
"OHVMBS+4ͷ͝հ 4BQQPSPKT!UNBFEB
!UNBFEB w 3VCZͱ͔0$BNMͷਓͰ͢ɻ w ࠷ۙԑ͋ͬͯɺࣄͰ"OHVMBSΛϲ݄ఔ͍ͬͯ·͢ɻ w TBQQPSPKTॳࢀՃͰ͢ɻ w ੴా͞Μͷ,OPDLPVUͷΛฉ͖ͨͯ͘ࢀՃొͨ͠Βɺ ͳ͔ͥൃදͤ͞ΒΕΔ͜ͱʹͳΓ·ͨ͠ɻॳΊͯͳͷʹɻ
w +BWBTDSJQUͷ͜ͱྑ͘Γ·ͤΜͷͰɺ͓खॊΒ͔ʹɻ
ࠓͷ͓ w"OHVMBSͷ֓ཁ wσϞ w"OHVMBSͷಛߏ wߋʹ͍͔ͭ͘σϞ wࣄྫ wܽɺར
"OHVMBS+4ͱ w(PPHMFͷ.JãLP)FWFSZ͞ΜΛத৺ʹ࡞ΒΕͯ ͍Δ.*5-JDFOTFͷ$MJFOUTJEF+BWB4DSJQU .7 ͍ΘΏΔ.7$ .77. .71ͳͲͳͲ 'SBNFXPSLɻ wʹެ։ɻ
http://misko.hevery.com/about/
"OHVMBS ϑϨʔϜϫʔΫͰͳ͍ʂ )5.-ͷ࠶ઃܭͩοʂ
"OHVMBS ϑϨʔϜϫʔΫͰͳ͍ʂ )5.-ͷ࠶ઃܭͩοʂ f*[y
·ͣσϞΛ ͝ཡ͖·͠ΐ͏
͡Ίͯͷ"OHVMBS+4 <!doctype html> <html lang="ja" ng-app> <head> <meta charset="utf-8"> <title>Ζʔ͋Μ͗ΎΒʔ</title>
<script src="http://cdnjs.cloudflare.com/ajax/libs/angular.js/ 1.1.5/angular.min.js"></script> </head> <body> <input type="text" ng-model="name" > <p>Hello {{name}}</p> </body> </html>
͡Ίͯͷ"OHVMBS+4
͡Ίͯͷ"OHVMBS+4 จࣈΛೖΕΔͱ
͡Ίͯͷ"OHVMBS+4 ϦΞϧλΠϜʹ දࣔ͞ΕΔʂ
͡Ίͯͷ"OHVMBS+4 ߦεΫϦϓτ ॻ͍ͯͳ͍ͷ ʹʂʂʂ
͡Ίͯͷ"OHVMBS+4 <!doctype html> <html lang="ja" ng-app> <head> <meta charset="utf-8"> <title>Ζʔ͋Μ͗ΎΒʔ</title>
<script src="http://cdnjs.cloudflare.com/ajax/libs/angular.js/ 1.1.5/angular.min.js"></script> </head> <body> <input type="text" ng-model="name" > <p>Hello {{name}}</p> </body> </html>
ͳΜͰʁʁʁ
ίϯύΠϧޙ <html lang="ja" ng-app="" class="ng-scope"><head> <meta charset="utf-8"> <title>Ζʔ͋Μ͗ΎΒʔ</title> <script src="http://cdnjs.cloudflare.com/ajax/libs/angular.js/
1.1.5/angular.min.js"></script> <style type="text/css"> @charset "UTF-8"; [ng\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng- cloak,.x-ng-cloak{display:none;} ng\:form{display:block;} </style> </head> <body> <input type="text" ng-model="name" class="ng-valid ng-dirty"> <p class="ng-binding">Hello ͋Μ͗ΎΒʔ</p> </body> </html>
ίϯύΠϧޙ
ͭ·Γʁ
$compile {{ }} $interpolate Directive ng-app ng-model ... Model name
View {{name}} <input>
$compile {{ }} $interpolate Directive ng-app ng-model ... Model name
View {{name}} <input> "OHVMBSಠ ࣗʹ)5.-λάΛ ఆٛ͢ΔΈΛ ఏڙ͍ͯ͠Δ
$compile {{ }} $interpolate Directive ng-app ng-model ... Model name
View {{name}} <input> "OHVMBS QVSF )5.-Λ ίϯύΠϧ ͯ͠.7Λ ࣗಈੜ͢ Δ
$compile {{ }} $interpolate Directive ng-app ng-model ... Model name
View {{name}} <input> 7ͱ.ํʹ ଓ͞Ε͍ͯΔ
$compile {{ }} $interpolate Directive ng-app ng-model ... Model name
View {{name}} <input> .PEFMͲΜͳσ ʔλߏͰྑ͍ ಛघͳΫϥεΛܧঝ͢ Δඞཁͳ͍
$compile {{ }} $interpolate Directive ng-app ng-model ... Model name
View {{name}} <input> 7JFXςΩετͰ ͳ͘ੜ͖ͨΦϒδΣΫ τͰ͋Δ
Α͋͘ΔςϯϓϨʔτΤϯδϯ template model template engine (෦) HTML Browser ඳը݁Ռ NPEFMΛมߋ͢ΔͱɺUFNQMBUF
શମΛඳը͠͠
Browser "OHVMBSͷ7JFX model View template Angular $compile ඳը݁Ռ NPEFMΛมߋ͢Δͱɺͦͷมߋ ʹؔ͋Δ෦͚ͩॻ͖มΘΔ
※͋·Γਖ਼֬ͳֆ͡Όͳ͍Ͱ͢ɺ͢Έ·ͤΜɻ֓೦͚ͩΈऔ͍ͬͯͩ͘͞ɻ
$compile {{ }} $interpolate Directive ng-app ng-model ... Model name
View {{name}} <input> 7JFXςΩετͰ ͳ͘ੜ͖ͨΦϒδΣΫ τͰ͋Δ
͡Ίͯͷ"OHVMBS+4 <!doctype html> <html lang="ja" ng-app> <head> <meta charset="utf-8"> <title>Ζʔ͋Μ͗ΎΒʔ</title>
<script src="http://cdnjs.cloudflare.com/ajax/libs/angular.js/ 1.1.5/angular.min.js"></script> </head> <body> <input type="text" ng-model="name" > <p>Hello {{name}}</p> </body> </html>
͡Ίͯͷ"OHVMBS+4 <!doctype html> <html lang="ja" ng-app> <head> <meta charset="utf-8"> <title>Ζʔ͋Μ͗ΎΒʔ</title>
<script src="http://cdnjs.cloudflare.com/ajax/libs/angular.js/ 1.1.5/angular.min.js"></script> </head> <body> <input type="text" ng-model="name" > <p>Hello {{name}}</p> </body> </html> શ͘ແବͷͳ͘ ײతͳهड़
ྫ͑CBDLCPOFͩͱ <input id="new-todo" type="text"> events: { "keypress #new-todo": "createOnEnter", createOnEnter:
function(e) { ... Todos.create({title: this.input.val()}); ... }, template: controller:
ྫ͑CBDLCPOFͩͱ <input id="new-todo" type="text"> events: { "keypress #new-todo": "createOnEnter", createOnEnter:
function(e) { ... Todos.create({title: this.input.val()}); ... }, template: controller: ݁ͼ͚ͭΔͨΊ͚ͩ ʹJEఆٛͯ͠
ྫ͑CBDLCPOFͩͱ <input id="new-todo" type="text"> events: { "keypress #new-todo": "createOnEnter", createOnEnter:
function(e) { ... Todos.create({title: this.input.val()}); ... }, template: controller: 7JFX ͔ΒσʔλΛऔΓ ग़ͯ͠ɺϞσϧʹೖ ΕΔॲཧࣗͰ ॻ͍ͯ
ྫ͑CBDLCPOFͩͱ <input id="new-todo" type="text"> events: { "keypress #new-todo": "createOnEnter", createOnEnter:
function(e) { ... Todos.create({title: this.input.val()}); ... }, template: controller: ݁ͼ͚ͭΔ
͡Ίͯͷ"OHVMBS+4 <!doctype html> <html lang="ja" ng-app> <head> <meta charset="utf-8"> <title>Ζʔ͋Μ͗ΎΒʔ</title>
<script src="http://cdnjs.cloudflare.com/ajax/libs/angular.js/ 1.1.5/angular.min.js"></script> </head> <body> <input type="text" ng-model="name" > <p>Hello {{name}}</p> </body> </html> શ͘ແବͷͳ͘ ײతͳهड़
ϧʔϓͱ͔ʁ
ུ <script> var mainCtrl = function($scope) { $scope.talkers = [
{"name": "·͑ͩ", "id": "@tmaeda", "title": "AngularJS"}, {"name": "ΓΎ͏ͷ͚͢", "id": "@tricknotes", "title": "How to relaunch sapporojs.org"}, {"name": "͍ͩ͠", "id": "@iakio", "title": "Getting Started with Knockout.js"} ]; } </script> </head> <body> <div ng-controller="mainCtrl"> <ul> <li ng-repeat="talker in talkers"> {{talker.name}}: {{talker.id}}: {{talker.title}} </li> </ul> </div> ུ
ϑΟϧλͳΜͯ ͷ͋Γ·͢
ུ <script> var mainCtrl = function($scope) { $scope.talkers = [
{"name": "·͑ͩ", "id": "@tmaeda", "title": "AngularJS"}, {"name": "ΓΎ͏ͷ͚͢", "id": "@tricknotes", "title": "How to relaunch sapporojs.org"}, {"name": "͍ͩ͠", "id": "@iakio", "title": "Getting Started with Knockout.js"} ]; } </script> </head> <body> <div ng-controller="mainCtrl"> <input type="text" ng-model="query"> <ul> <li ng-repeat="talker in talkers | filter:query"> {{talker.name}}: {{talker.id}}: {{talker.title}} </li> </ul> </div> ུ
%%Ͱฒସ͑
<html lang="ja" ng-app="myApp"> ུ <script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></ script> <script src="http://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.10.3/jquery- ui.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.1.5/ angular.min.js"></script> <script src="http://cdnjs.cloudflare.com/ajax/libs/angular-ui/0.4.0/angular- ui.min.js"></script> <script> var myApp = angular.module('myApp', ['ui']) ; var mainCtrl = function($scope) { $scope.talkers = [ {"name": "·͑ͩ", "id": "@tmaeda", "title": "AngularJS"}, {"name": "ΓΎ͏ͷ͚͢", "id": "@tricknotes", "title": "How to relaunch sapporojs.org"}, {"name": "͍ͩ͠", "id": "@iakio", "title": "Getting Started with Knockout.js"} ]; } </script> ུ <ul ui-sortable ng-model="talkers"> <li ng-repeat="talker in talkers"> ฒସ͑Ͱ͖ΔΑ͏ʹ͠·͢Αɻ ͦΕʹΑͬͯɺฒͼมΘΔϞσϧ͜ΕͰ͢Αɻ ʢશ͘ແବͷͳ͍هड़ʣ
άϦου
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> <script src="http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.1.5/angular.min.js"></script> <script src="http://cdnjs.cloudflare.com/ajax/libs/ng-grid/2.0.7/ng-grid.min.js"></script> <script> var myApp =
angular.module('myApp', ['ngGrid']) ; var mainCtrl = function($scope) { $scope.talkers = [ {"name": "·͑ͩ", "id": "@tmaeda", "title": "AngularJS"}, {"name": "ΓΎ͏ͷ͚͢", "id": "@tricknotes", "title": "How to relaunch sapporojs.org"}, {"name": "͍ͩ͠", "id": "@iakio", "title": "Getting Started with Knockout.js"} ]; $scope.gridOptions = { data: 'talkers' }; } </script> <link rel="stylesheet" type="text/css" href="http://cdnjs.cloudflare.com/ajax/libs/ng-grid/ 2.0.7/ng-grid.css" /> <style> .gridStyle { border: 1px solid rgb(212,212,212); width: 400px; height: 300px } </style> ུ <div ng-controller="mainCtrl"> <div class="gridStyle" ng-grid="gridOptions"> </div> </div> HSJE0QUJPOTʹैͬͯ άϦουΛදࣔͯ͠Ͷ શ͘ແବͷͳ͍هड़ ػೳ͕༗Γ͗͢ΔͷͰɺৄࡉͪ͜Β http://angular-ui.github.io/ng-grid/
"OHVMBS+4ͷߏཁૉ wWJFX wDPOUSPMMFS wNPEFM wTFSWJDF wEJSFDUJWF wpMUFS wશ͘ແବͳهड़ͷͳ͍ %* JOKFDUPS
wSPVUFS wQSPNJTF R wIUUQSFTPVSDF wUFTUJOH w
ࣄྫ http://builtwith.angularjs.org/
ਓؾ ถࠃௐࠪػؔGࣾௐ
"OHVMBS+4WT#BDLCPOF+4 wࣗͷ#BDLCPOFΞϓϦΛ"OHVMBSͰॻ͖ͨ͠ ΜͩɻίʔυαΠζߦ͔ΒͲ͜·Ͱݮͬ ͨͱࢥ͏ʁߦͩΑɻͦΕ͚ͩ͡Όͳ͘ɺίʔ υͣͬͱ៉ྷʹͳͬͨɻ http://stackoverflow.com/questions/6548826/angular-js- vs-backbone-js
"OHVMBS+4ͷܽ w֓೦Λཧղ͢ΔͷʹগʑΛཁ͢ΔɻBQQMZ ͱ͔XBUDI ͱ͔EJHFTUϧʔϓͱ͔DPNQJMFͱ͔ MJOLͱ͔QSPNJTFͱ͔ɻͦΓΌͦʔͰ͢Αɺ )5.-ͱϒϥβΛઃܭ͠ͳ͓ͯ͠ΜͰ͔͢Β wطଘͷʢ.7$ͷ͜ͱશ͘ߟྀͯ͠ͳ͍ ϥΠϒϥ ϦϑϨʔϜϫʔΫίʔυยͱͷ࿈ܞ͕໘ Θ͟Θ͟EJSFDUJWFΛॻ͔ͳ͍ͱ͍͚ͳ͍߹͕
ଟ͍
"OHVMBS+4ͷར wϑϨʔϜϫʔΫ͔ΒΫϦʔϯͳίʔυΛॻ͔ͳ͖ Ό͍͚ͳ͍ѹྗΛड͚Δ ඪ४Ͱ༻ҙ͞Ε͍ͯΔ ػೳͰ.7 ʹ߹Θͳ͍ίʔυجຊతʹॻ͚ͳ ͍ ͷͰɺίʔυ͕៉ྷʹͳΓ͍͢ɻ w%*%JSFDUJWFͳͲͷڧྗͳ෦Խػߏͷ͓͔͛ Ͱ෦ͷ࠶ར༻͕͍͢͠ɻඇৗʹ͍ίʔυͰ
Ϧονͳػೳ͕࣮ݱͰ͖Δɻࠓޙɺࣗ࡞Φʔϓ ϯιʔεͷ෦ͷࢿ࢈͕ͨ·͍ͬͯ͘ͱͲΜͲΜ ָʹͳ͍ͬͯ͘͜ͱ͕ݟࠐ·ΕΔɻ
·ͱΊ w"OHVMBS+4ඇৗʹ؆ܿͳهड़Ͱ.7 ͳΞϓϦ έʔγϣϯ͕։ൃͰ͖ΔϑϨʔϜϫʔΫͰ͢ɻ w%*%JSFDUJWFͳͲͷΈʹΑΓɺ࠶ར༻ੑͷ ߴ͍෦͕࡞Γ͍͢ͷͰɺ͑͏ఔָʹͳ ͍͖ͬͯ·͢ɻ