SetInteval问题

时间:2017-10-11 15:18:24

标签: javascript angularjs

我有一个Insert函数可以在数据库中插入数据。该函数由一个按钮(正常工作)调用,也可以通过一个倒计时调用该函数,当它变为0时。在第二种情况下,该函数将数据插入为空。

以下是我的代码:

插入功能:

$scope.EnviarRespuestas = function () {
        $http.post(
            "insert.php", {
                'preg1': $scope.pregunta1,
                'preg2': $scope.pregunta2,
                'preg3': $scope.pregunta3,
                'preg4': $scope.pregunta4,
                'preg5': $scope.pregunta5,
                'preg6': $scope.pregunta6,
                'preg7': $scope.pregunta7,
                'preg8': $scope.pregunta8,
                'preg9': $scope.pregunta9,
                'preg10': $scope.pregunta10,
                'dni': $scope.dniaux,
                'apNom': $scope.nombreaux,
                'tiempo': $scope.tiempo
            }

        ).then(function (data) {
            console.log($scope.pregunta1);
            $scope.pregunta1 = "";
            $scope.pregunta2 = "";
            $scope.pregunta3 = "";
            $scope.pregunta4 = "";
            $scope.pregunta5 = "";
            $scope.pregunta6 = "";
            $scope.pregunta7 = "";
            $scope.pregunta8 = "";
            $scope.pregunta9 = "";
            $scope.pregunta10 = "";
            $scope.apNom = "";
            $scope.dni = "";
            $scope.tiempo = "";
            clearInterval(timer);
            $('.button').removeClass('blue');
            $('.ui.menu').find('.item').tab('change tab', 1);
        });
}

和以下是倒计时为0时调用第一个函数的函数:

$scope.startTimer = function () {
    $scope.segundos = 15;
    $scope.minutos = 00;
    timer = setInterval(function () {
        $scope.segundos--;
        if ($scope.segundos < 10) {
            $scope.segundos = "0" + $scope.segundos
        }
        if ($scope.minutos == 0 && $scope.segundos == 0) {
            clearInterval(timer);
            $scope.calcularTiempo();
            $scope.EnviarRespuestas();
        }
        $scope.$apply();
        if ($scope.segundos <= 0) {
            $scope.minutos--;
            $scope.segundos = 05;
        }
    }, 1000);
}

1 个答案:

答案 0 :(得分:1)

整个$scope.startTimer函数似乎没必要,因为angularjs已经有一个$timeout函数可以起到同样的作用;

$timeout(function()  {
  // what to call
}, 15000) // 15000 = 15 seconds

其次,如果您已经有一个有效的按钮,那么当计时器到期时,您可以在其上调用.click()

$timeout(function()  {
  angular.element('#buttonId').click();
}, 15000) // 15000 = 15 seconds