Угловое соединение JS $ timeout и $ scope - PullRequest
0 голосов
/ 28 августа 2018

Я просто нахожу странную (для меня) вещь в angularjs. Почему эти части работают по-разному?

Тайм-аут работает (предупреждение через 8 секунд)

$scope.testfun = function(){
    alert(2);
}
$scope.activate = function(h,m,s){
    if(h != 0 || m != 0 || s != 0) $timeout($scope.testfun, 8000);
}

Тайм-аут НЕ работает (мгновенное предупреждение)

$scope.testfun = function(){
    alert(2);
}
$scope.activate = function(h,m,s){
    if(h != 0 || m != 0 || s != 0) $timeout($scope.testfun(), 8000);
}

Разница в $ scope.testfun и $ scope.testfun ()

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Для $scope.function() не так.

$timeout(function() { $scope.testfun(someParam); }, 8000) 

Область действия - это связующая часть между HTML (представление) и JavaScript (контроллер).

Область действия - это объект с доступными свойствами и методами.

Область доступна как для вида, так и для контроллера.

0 голосов
/ 28 августа 2018

Вам нужно написать функцию тайм-аута, как показано ниже: *

$scope.testfun = function() {
    alert(2);
}

$scope.activate = function(h,m,s) {
    if (h != 0 || m != 0 || s != 0) {
      $timeout(function () {
        $scope.testfun();
      }, 8000);
    }
}
...