AngularJS 秒表在移动设备上速度慢得无法使用

AngularJS Stopwatch is unusably slow on mobile

所以我想制作一个秒表应用程序,内置一些额外的运动跟踪功能。我正在使用这个 angular timer 秒表库(从-文档开始和停止按钮),然后使用按钮将文本添加到列表中——非常简单。

var app = angular.module('myTimer', ['timer'])

.controller('MainCtrl', ['$scope', function($scope){
  $scope.init = true;
  $scope.timerRunning = false;

  $scope.startTimer = function() {
    // calling init on a running timer borks it
    if ($scope.init) {
      $scope.$broadcast('timer-start');
      $scope.init = false;
    }
    else {
      $scope.$broadcast('timer-resume');
    }
    $scope.timerRunning = true;  
  };

  $scope.stopTimer = function() {
    $scope.$broadcast('timer-stop');
    $scope.timerRunning = false;
  };
}]);

不幸的是,在移动设备上通过本地主机加载页面(iPhone 5S,iOS 8.1)有效,但按下 start/stop 按钮和计时器之间大约有半秒的延迟反应 - 不是一个愉快的用户体验。

我还尝试了 jQuery implementation,它 运行 速度更快,但仍然不如桌面上的同一站点(或本机计时器,可以理解)那么活泼。

所以我的问题是:有什么 javascript 的配置可以让我快速完成 运行 吗?我没有做过任何移动应用程序开发,所以完成这个基于 Web 的项目是最理想的。

谢谢!

我认为您的问题不在于计时器,而是在您更改 $scope.timerRunning 值时未触发作用域的摘要循环。 更改值后尝试执行此操作: $scope.$digest();

事实证明,按下按钮的延迟根本不是由 angular 引起的,而是由移动浏览器添加到点击中的固有 300 ms delay 引起的。

因此,通过使用 FastClick(并遵循随附的说明),在移动设备上的性能如预期的那样快。