Angular JS数字计数器

我正在尝试制作一个自定义指令,以从0到X进行计数。我成功执行了该指令,但是我似乎无法弄清楚如何提高计数。我面临的问题是,结束号是7/8位数字,由于明显的原因,以1递增实际上并没有工作。

这是三个独立的计数器,每个计数器将具有一个不同的结束号,该结束号目前已进行硬编码。

    .directive('cuImpactCounter',['$compile',function ($compile) {
    return {
        restrict: 'E',replace: false,scope: {},template: '<div class="row">' +
                    '<div class="col d-flex text-center flex-column">' +
                        '<div><p>Test 1</p></div>' +
                        '<div><p>{{ interestSavedMillis }}</p></div>' +
                    '</div>' +
                    '<div class="col d-flex text-center flex-column">' +
                        '<div><p>Test 2</p></div>' +
                        '<div><p>{{ interestEarnedMillis }}</p></div>' +
                    '</div>' +
                    '<div class="col d-flex text-center flex-column">' +
                        '<div><p>Test 3</p></div>' +
                        '<div><p>{{ savingsEarnedMillis }}</p></div>' +
                    '</div>' +
                '</div>',controller: ['$scope',function ($scope) {

            $scope.interestSavedMillis = 0;
            var interestSaved = 15016400;
            var i = 0;
            function interestSavedTimeLoop() {
                setTimeout(function() {
                    $scope.interestSavedMillis++;
                    $scope.$digest();
                    i++;
                    if (i < interestSaved) {
                        interestSavedTimeLoop();
                    }
                },1);
            }
            interestSavedTimeLoop();

            // 
            $scope.interestEarnedMillis = 0;
            var interestEarned = 12367690;
            var x = 0;
            function interestEarnedTimeLoop() {
                setTimeout(function () {
                    $scope.interestEarnedMillis++;
                    $scope.$digest();
                    x++;
                    if (x < interestEarned) {
                        interestEarnedTimeLoop();
                    }
                },1);
            }
            interestEarnedTimeLoop();

            $scope.savingsEarnedMillis = 0;
            var savingsEarned = 34819566;
            var y = 0;
            function savingsEarnedTimeLoop() {
                setTimeout(function () {
                    $scope.savingsEarnedMillis++;
                    $scope.$digest();
                    y++;
                    if (y < savingsEarned) {
                        savingsEarnedTimeLoop();
                    }
                },1);
            }
            savingsEarnedTimeLoop();

        }]
    }
}])
FANCY905269369 回答:Angular JS数字计数器

对于这样的事情,我肯定会相反。我将决定循环应运行多长时间才能达到最终计数。假设我想在10秒内达到5,000,000。那是10,000毫秒,让我们决定每10毫秒循环一次。这使我们的循环计数为1000。

所以我们现在有1000个循环,达到500万个循环,即每个循环增加5000个循环。

let counter = 0;
setTimeout(function() {
   counter +=5000; 

   if(counter > interestSaved) 
       counter = interestSaved;

   $scope.interestSavedMillis = counter;
   $scope.$digest();

   if (counter < interestSaved) {
      interestSavedTimeLoop();
   }
},10); //10 millisecond loop

很显然,这会使计数器看起来很虚假。因此,您可以将增量值替换为不是10的幂的东西。基本思想是让计数器在特定时间后停止。

您还可以在方程中添加速度因数,以使1000万和500万不会同时结束。

我希望你有主意。

本文链接:https://www.f2er.com/3157715.html

大家都在问