初学者向けセミナー資料

49
AngularJS のきほんのきほん PASONA TECH AnguarJS セミナー 2014/06/18

description

以下のセミナーで使用した資料です。 http://www.pasonatech.co.jp/skill_up/event/140618_shibuya.jsp

Transcript of 初学者向けセミナー資料

Page 1: 初学者向けセミナー資料

AngularJS のきほんのきほん

PASONA TECH AnguarJS セミナー 2014/06/18

Page 2: 初学者向けセミナー資料

{{ About me }}

AngularJS Japan User Group 管理人 html5j Web先端技術味見部 部長

金井 健一 フリーランス フロントエンド方面のお仕事

can_i_do_web ( きゃない ) facebook/can.i.do.web

Page 3: 初学者向けセミナー資料

{{ Agenda }} • Basic • Validation • with jQuery • Learn more ... • Conclusion ( links )

Page 4: 初学者向けセミナー資料

https://angularjs.org/

Page 5: 初学者向けセミナー資料

{{ Why it’s called AngularJS ? }}

Because HTML has Angular brackets

Page 6: 初学者向けセミナー資料

{{ Why it’s called AngularJS ? }}

<html>

Page 7: 初学者向けセミナー資料

{{ MVW? }}

Model View Whatever

Page 8: 初学者向けセミナー資料

{{ MVW? }}

MVC とか MVVM とか どうでもいいから

とにかくコード書こうぜ!

Page 9: 初学者向けセミナー資料

{{ Basic }}

Page 10: 初学者向けセミナー資料

{{ Basic }}

Page 11: 初学者向けセミナー資料

http://www.google.co.jp/trends

Page 12: 初学者向けセミナー資料

{{ Basic }}

• Unobtrusive data binding • HTML as the template. • Reusable components -- in HTML! • Views and Routes. • Tests and Testability.

Page 13: 初学者向けセミナー資料

{{ Basic }}

• 控えめなデータバインディング • テンプレートとしてのHTML • 再利用可能なコンポーネント • Views とルーティング • テストとその可用性

Page 14: 初学者向けセミナー資料

{{ Basic }}

• Two Way Binding ( ng-model ) • ng-bind = {{ }} • ng-init • ng-show/hide • ng-repeat • filter

Page 15: 初学者向けセミナー資料

{{ Basic }} Filter

• date • limitTo • orderBy この3つが特に便利でオススメ!

Page 16: 初学者向けセミナー資料

Demo

Page 17: 初学者向けセミナー資料

{{ Validation }} • Form名.input名.$valid • Form名.input名.$invalid • Form名.input名.$error

• この中に個別のvalidationのチェック状況 ex)  xxx.yyy.$error = { minlength: true }

• Form名.$valid • Form名.$invalid

Page 18: 初学者向けセミナー資料

{{ Validation }}

全く意味がわかりませんよね? (またDemoします)

Page 19: 初学者向けセミナー資料

{{ Validation }}

便利ですので 積極的に使っていきましょう

Page 20: 初学者向けセミナー資料

Demo 2

Page 21: 初学者向けセミナー資料

{{ with jQuery }}

Page 22: 初学者向けセミナー資料

{{ with jQuery }}

Page 23: 初学者向けセミナー資料

{{ with jQuery }}

jQuery を利用したライブラリや プラグインとは相性が悪そう…

Page 24: 初学者向けセミナー資料

{{ with jQuery }}

極力つかわない方が トラブルに巻き込まれにくい!

Page 25: 初学者向けセミナー資料

{{ Learn more ... }}

http://dotinstall.com/lessons/basic_angularjs

Page 26: 初学者向けセミナー資料

{{ Learn more ... }}

https://egghead.io/

Page 27: 初学者向けセミナー資料

{{ Learn more ... }}

http://campus.codeschool.com/courses/shaping-up-with-angular-js/intro

Page 28: 初学者向けセミナー資料

{{ Learn more ... }}

Page 29: 初学者向けセミナー資料

{{ Conclusion }}

参考サイト紹介

Page 30: 初学者向けセミナー資料

{{ Conclusion }}

AngularJS Batarang Chrome ウェブストア からダウンロード

Page 31: 初学者向けセミナー資料

{{ Conclusion }}

AngularJS Ninja http://angularjsninja.com/

Page 32: 初学者向けセミナー資料

{{ Conclusion }}

js STUDIO http://js.studio-kingdom.com/angularjs

Page 33: 初学者向けセミナー資料

{{ Conclusion }}

Qiita http://qiita.com/tags/angularjs

Page 34: 初学者向けセミナー資料

{{ Conclusion }}

Onsen UI http://onsenui.io/

Page 35: 初学者向けセミナー資料

{{ Conclusion }}

ionic http://ionicframework.com/

Page 36: 初学者向けセミナー資料

{{ Conclusion }}

AngularJS Japan User Group #ng_jp https://groups.google.com/forum/#!forum/angularjs-jp

Page 37: 初学者向けセミナー資料

Thank you.

Page 38: 初学者向けセミナー資料

補足

Page 39: 初学者向けセミナー資料

{{ ハンズオンで使用したコード }} <!DOCTYPE html> <html lang="ja" ng-app> <head> <meta charset="UTF-8"> <script src="./angular.min.js"></script> </head> <body> {{ 1 + 2 }} </body> </html>

AngularJS の利用宣言

AngularJS の読み込み

ちゃんと読み込めているか確認

Page 40: 初学者向けセミナー資料

{{ ハンズオンで使用したコード }} <body> <form name="demoForm" novalidate> <input type="text" ng-model="demoId” name="demoId"> <input type="text" ng-model="demoPassword” name="demoPassword” > <input type="submit" value="login"> <p>{{ demoId }}</p> </form> </body>

ブラウザのvalidationを OFF

ng-modelの定義

データバインディングを確認

Page 41: 初学者向けセミナー資料

{{ ハンズオンで使用したコード }} <style> input.ng-invalid.ng-dirty{ border-color: red; } </style> <form name="demoForm" novalidate> <input type="text" ng-model="id" name="demoId" required ng-minlength=“4” ng-maxlength=“8”> <input type="text" ng-model="Password" name="demoPassword” ng-parttern="/^[0-9]{5,10}$/"> <input type="submit" value="login"> </form>

バリデーションの定義

Page 42: 初学者向けセミナー資料

{{ ハンズオンで使用したコード }} <form name="demoForm" novalidate> <input type="text" ng-model="demoId"

name="demoId" required ng-minlength="4" ng-maxlength="8"> <input type="text" ng-model="demoPassword"

name="demoPassword" ng-pattern="/^[0-9]{5,10}$/"> <input type="submit" value="login"> <p ng-show="demoForm.demoId.$error.required && demoForm.demoId.$dirty">demoId の required がエラー時</p> <p ng-show="demoForm.demoId.$error.minlength">demoId の min-length(4文字)のエラー時</p> <p ng-show="demoForm.demoId.$error.maxlength">demoId の max-length(8文字)のエラー時</p> </form>

エラーメッセージの出し分け

Page 43: 初学者向けセミナー資料

{{ ハンズオンで使用したコード }} <form name="demoForm" novalidate> <input type="text" ng-model="demoId" name="demoId" required ng-minlength="4" ng-maxlength="8"> <input type="text" ng-model="demoPassword" name="demoPassword" ng-pattern="/^[0-9]{5,10}$/"> <input type="submit" value="login"> <p ng-show="demoForm.$invalid">form のどこかに1つでもエラーがある時</p> </form> エラーメッセージの出し分け

Page 44: 初学者向けセミナー資料

{{ ハンズオンで使用したコード }} <form name="demoForm" novalidate> <input type="text" ng-model="demoId" name="demoId" required ng-minlength="4" ng-maxlength="8"> <input type="text" ng-model="demoPassword" name="demoPassword" ng-pattern="/^[0-9]{5,10}$/"> <input type="submit" value="login" ng-disabled="demoForm.$invalid"> </form>

全てのバリデーションチェックが OKになるまで押せない

Page 45: 初学者向けセミナー資料

{{ ハンズオンで使用したコード }} <body> <div ng-init="demoData=[ 'abcde123', 'defg234', 'hijk456', 'jklm246' ]"></div> <ul> <li ng-repeat="data in demoData">{{ data }}</li> </ul> </body>

初期値の定義

繰り返し処理

Page 46: 初学者向けセミナー資料

{{ ハンズオンで使用したコード }} <body> <div ng-init="demoData=[ 'abcde123', 'defg234', 'hijk456', 'jklm246' ]"></div> <input type="text" ng-model="search"> <ul> <li ng-repeat="data in demoData | filter:search">{{ data }}</li> </ul> </body>

検索ワード

絞り込み機能

Page 47: 初学者向けセミナー資料

{{ ハンズオンで使用したコード }} <body> <div ng-init="demoData=[ 'abcde123', 'defg234', 'hijk456', 'jklm246' ]"></div> <input type="text" ng-model="search"> <ul> <li ng-repeat="data in demoData | limitTo:2 | filter:search">{{ data }}</li> </ul> </body>

2件のみ表示

Page 48: 初学者向けセミナー資料

{{ ハンズオンで使用したコード }} <body> <div ng-init="demoData=[ { name: 'abcde123', age : 30}, { name: 'defg234', age : 31}, { name: 'hijk456', age : 31}, { name: 'jklm246', age : 32} ]"></div> <input type="text" ng-model="search"> <ul> <li ng-repeat="data in demoData | filter:search">{{ data.name }} - {{ data.age }}</li> </ul> </body>

Page 49: 初学者向けセミナー資料

{{ ハンズオンで使用したコード }} <body> <div ng-init="demoData=[ { name: 'abcde123', age : 30}, { name: 'defg234', age : 31}, { name: 'hijk456', age : 31}, { name: 'jklm246', age : 32} ]"></div> <input type="text" ng-model="search.name"> <ul> <li ng-repeat="data in demoData | filter:search">{{ data.name }} - {{ data.age }}</li> </ul> </body>

Nameのみ検索可能