2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Angular js でストップウォッチを作ったメモ

Last updated at Posted at 2018-11-15

Angular jsを使ってストップウォッチを作る

ユーザ側に経過時間を見せながらログを取るアプリケーションを作る必要があったので,ここにメモ

表示用のhtml

index.html

<!DOCTYPE html>
<html ng-app="app">
  <head>
    <!-- import Library | Framework -->
    <title>ストップウォッチ</title>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.7.5/angular.min.js"></script>
    <script src="./Time_control.js"></script>
  </head>
<body>
    <div ng-contoller="time_controller">
        <!-- 表示用 -->
        <p>{{time_status}}</p>
        <div>
            <input type="button" value="start" ng-click="start()" ng-class="{disabled :start_status}">
        </div>
        <div>
            <input type="button" value="end" ng-click="stop()" ng-class="{disabled :stop_status}">
        </div>
    </div>

</body>

ng-controllerでコントロールの範囲を決めて,その中のng-clickに対してイベントリスナーをJS側で書いていく

Time_control.js
var app = angular.module("app",[]);

app.controller("time_control",function($scope,$interval){
    $scope.time_status = "00:00";
    // 外のメソッドからアクセスしたいため,グローバル変数へ
    time = 0;
    // startのボタンのみ有効
    $scope.start_status = "";
    $scope.stop_status = "disable";
// スタートを押した際にカウントを始める
  $scope.start = function(){
    // スタートボタンは無効化する
    $scope.start_status = "disabled";
    $scope.stop_status = "";
    // 1秒間に1回処理を呼び出すようにする
    timer = $interval(function(){
      time++;
      var sec = parseInt((time % 60) / 10) == 0 ? "0" + (time % 60).toString() : (time % 60).toString();
      var min = parseInt(time / 600) == 0 ? "0" + parseInt(time/60).toString() : parseInt(time/60).toString();
      $scope.time_status = min + ":" + sec;
    },1000);
  }
    // ストップを押したら時間を止めるようにする
  $scope.stop = function(){
    $interval.cancel(timer);
    $scope.start_status = "";
    $scope.stop_status = "disabled";
  };
})

コードはこんな感じ

注意するところはcontollerの中の引数を$scopeだけではなく$intervalも入れること
割とそのエラーで今後ハマりそう。。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?