Angular JS $timeout与$scope函数通信

Angular JS $timeout and $scope function communication

我只是在 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()

的区别

你需要像下面这样写超时函数::

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

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

因为$scope.function()是错误的。

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

范围是HTML(视图)和JavaScript(控制器)之间的绑定部分。

范围是具有可用属性和方法的对象。

该范围可用于视图和控制器。