39
KnockoutJS Hands-On Visual Studio Knockoutjs 勉勉勉勉勉勉 勉勉勉勉勉 JavaScript 勉勉勉勉勉勉 勉勉勉勉勉勉勉勉JavaScript 勉勉勉勉勉勉勉勉勉 MVVM 勉勉勉勉勉勉勉勉勉勉勉勉勉勉勉勉勉勉 knockoutjs 勉勉勉勉勉1 http://atnd.org/events/ 50026

20140517 knockoutjs hands-on

Embed Size (px)

Citation preview

Page 1: 20140517 knockoutjs hands-on

KnockoutJSHands-On Visual Studio

Knockoutjs 勉強会の内容初心者向け JavaScript 入門からテラ・コーティングまで! JavaScriptフレームワークの主流、 MVVM アーキテクチャパターンを採用している knockoutjs を堪能する!

1

http://atnd.org/events/50026

Page 2: 20140517 knockoutjs hands-on

自己紹介 名前 : 野呂清二 Twitter : @seinoro Facebook : seiji.noro 言語 :C#, JavaScript (C++, Java)

Microsoft MVP for Office365 <

http://mvp.microsoft.com/ja-jp/mvp/Seiji%20Noro-5000492>

2

Page 3: 20140517 knockoutjs hands-on

参考文献

Knockout handson http://

www.slideshare.net/tanago3/knockout-handson

Knockout 日本語ドキュメント http://kojs.sukobuto.com/

3

Page 4: 20140517 knockoutjs hands-on

ハンズオンの流れ

環境のセットアップ

足し算アプリを作る

TODO アプリを作る

4

Page 5: 20140517 knockoutjs hands-on

環境のセットアップ5

Setup

Page 6: 20140517 knockoutjs hands-on

6

Setup

Page 7: 20140517 knockoutjs hands-on

Visual Studio のインストール

Visual Studio 2013 90 日間の無償評価版 http://www.visualstudio.com/ja-jp/downloads/download-v

isual-studio-vs.aspx Microsoft Visual Studio Professional 2013 Update 2

Microsoft Visual Studio Express 2013 for Web でも可能と思われる。

7

Setup

Page 8: 20140517 knockoutjs hands-on

新規プロジェクト作成① ファイル / 新規作成 / プロジェクト②Visual C#/Web/ASP.NET Web アプリケーション③MVC/④ 認証なし

8

Setup

Page 9: 20140517 knockoutjs hands-on

KnockoutJS インストール① ツール / ライブラリーパッケージマネジャー / ソリューションの NuGet パッケージの管理②Knockoutjs インストール

9

Setup

Page 10: 20140517 knockoutjs hands-on

確認以下のように Knockout.js が組み込まれています。

10

Setup

Page 11: 20140517 knockoutjs hands-on

足し算アプリを作る11

足し算

Page 12: 20140517 knockoutjs hands-on

ソースプログラム

Knockout.js で足し算アプリ (Visual Studio2013) http://tech.exceedone.co.jp/javascript/visualstudio-2013-m

vc5-with-twitterbootstrap-caluculate/

12

足し算

Page 13: 20140517 knockoutjs hands-on

13 HTML (/Views/Home/index.cshtml)

足し算

Page 14: 20140517 knockoutjs hands-on

14 JavaScript(/Scripts/test.js)

足し算

Page 15: 20140517 knockoutjs hands-on

デバック (F5) で動かしてみる。※ F9 でブレイクポイント

足し算

15

Page 16: 20140517 knockoutjs hands-on

実行結果足し算

16

Page 17: 20140517 knockoutjs hands-on

ko.observable()値の変更を監視します・主に UI と同期するために使用

※ko.observableArray() は後述

ko.observable

足し算

17

Page 18: 20140517 knockoutjs hands-on

ko.computed(f)利用している ko.observable の値が変わると実行される

ko.computed 内で利用している ko.observable

ko.computed

足し算

18

Page 19: 20140517 knockoutjs hands-on

data-bind

“value” binding は <input>, <select>, <textarea> のようなフォーム要素に使用する。

“text” binding は <span>, <em> のような表示するための要素に使用する。※ 基本的に何でもイケル。 number, string 以外の値をいれたら toString した値が表示される

“visible”, “style”, “attr”, “html”, “css”, “custom” などの binding がある

足し算

19

Page 20: 20140517 knockoutjs hands-on

ko.applyBindings(vm,node)

足し算

20

Page 21: 20140517 knockoutjs hands-on

TODO アプリを作る21

Todo

Page 22: 20140517 knockoutjs hands-on

ソースプログラム

Knockout.js で Todo アプリ (Visual Studio2013 http://tech.exceedone.co.jp/javascript/visualstudio-2013-m

vc5-with-twitterbootstrap-todos/

Todo

22

Page 23: 20140517 knockoutjs hands-on

23

HTML (/Views/Home/index.cshtml)

Todo

Page 24: 20140517 knockoutjs hands-on

24 JavaScript(/Scripts/test.js)

Todo

Page 25: 20140517 knockoutjs hands-on

実行結果Todo

25

Page 26: 20140517 knockoutjs hands-on

26 Add ボタンのアクション追加Todo

Index.cshtml

test.js

Page 27: 20140517 knockoutjs hands-on

実行結果27

Todo

Page 28: 20140517 knockoutjs hands-on

28 TaskList に追加するTodo

test.js

Page 29: 20140517 knockoutjs hands-on

TaskList に追加する29

Index.cshtml

foreach バインディング

Todo

Page 30: 20140517 knockoutjs hands-on

実行結果30

Todo

Page 31: 20140517 knockoutjs hands-on

31 delete ボタンのアクション追加

Todo

test.js

Page 32: 20140517 knockoutjs hands-on

delete ボタンのアクション追加

32

Index.cshtml

$parent: 親 ViewModel オブジェクト

その他にも$root: 最上位のコンテキストの ViewModel オブジェクト$data: 現在のコンテキストの ViewModel オブジェクト$index: foreach バインディング内で使用できる配列のインデックス

Todo

Page 33: 20140517 knockoutjs hands-on

時間が余ったら33

Page 34: 20140517 knockoutjs hands-on

時間が余ったら くつろぐ、 knockout 等で回りの人と談話する。 周りでできてない人の Help

他の課題(準備できていたら)

以下をみてみるとか SPA(Single Page Application) for knockout.js +

TwitterBootstrap + Sammy.js + SQL Azure + Visual Studio2013

http://tech.exceedone.co.jp/javascript/visualstudio-2013-mvc5-with-twitterbootstrap-knockout-spa/

34

Page 35: 20140517 knockoutjs hands-on

補足デバックについて35

Page 36: 20140517 knockoutjs hands-on

Internet ExplorerGoogle Chrome はブレイクポイントはとまりません。

36

Page 37: 20140517 knockoutjs hands-on

.cshtml でのデバックcshtml では、ブレイクポイントはとまりませんのでdebugger と入力します。

37

Page 38: 20140517 knockoutjs hands-on

.js でのデバック.js ブレイクポイントはとまります。

38

Page 39: 20140517 knockoutjs hands-on

ありがとうございました!!39