かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

TypeScriptとAngularJS「formのサブミット時に処理をする」

入力フォームとかで使いそうです。先ほどの例では、ボタンに直接ng-clickをつけて関数を割り当ててましたが、formでやるように改造してみます。ちなみにTypeScript側は下と同じです。

formのサブミット時の処理

といっても特に難しいことはなくformタグにng-submit属性をつけて、そこで呼び出したいスコープのメソッドを指定するだけです。見た目いじるのに、裏側のTypeScriptを一切いじらないでいいというのはステキなことですね。

<!DOCTYPE html>

<html lang="ja" ng-app="myApp">
<head>
    <meta charset="utf-8" />
    <title>TypeScript HTML App</title>
    <link rel="stylesheet" href="app.css" type="text/css" />
    <script src="Scripts/angular.min.js"></script>
    <script src="app.js"></script>
</head>
<body>
    <h1>TypeScript HTML App</h1>

    <div id="content" ng-controller="MessageCtrl">
        <!-- ng-submitで呼び出す処理を設定 -->
        <form ng-submit="greet()">
            <span>{{messageHolder.message}}</span>
            <hr />
            <!-- ボタンのタイプはsubmitにしておく -->
            <input type="submit" value="greet" />
        </form>

        <hr />
        <ul>
            <!-- ng-repeatを使ってコレクションの数だけテンプレートを展開できる -->
            <li ng-repeat="m in messageHolder.messageLog">{{m}}</li>
        </ul>
    </div>
</body>
</html>

さくっとね。ちなみに実行結果は1つ前の記事と変わらないので省略します。