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

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


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も入れること

割とそのエラーで今後ハマりそう。。

コメント

このブログの人気の投稿

投稿時間:2021-06-17 22:08:45 RSSフィード2021-06-17 22:00 分まとめ(2089件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)