角度一:javascript超时函数

角度一:javascript超时函数,javascript,angularjs,count,timeout,Javascript,Angularjs,Count,Timeout,我试图根据输入值调用函数。 该场景将是:如果10秒钟内没有人在该输入中添加内容(因此该值将为空),则禁用该输入。 我想使用ng更改或类似的角度方法,而不是任何“键盘键”条件 现在要做的第一件事是在点击按钮时将计时器设置为0,然后计数到10 angular.module('myApp', []) .controller('myCtrl', ['$scope', function($scope) { $scope.count = 10; $scope.inpValue = '';

我试图根据输入值调用函数。 该场景将是:如果10秒钟内没有人在该输入中添加内容(因此该值将为空),则禁用该输入。 我想使用ng更改或类似的角度方法,而不是任何“键盘键”条件

现在要做的第一件事是在点击按钮时将计时器设置为0,然后计数到10

angular.module('myApp', [])
  .controller('myCtrl', ['$scope', function($scope) {
  $scope.count = 10;
  $scope.inpValue = '';

  function myFunction() {
    setTimeout(function() {
      if ($scope.inpValue.length === 0 && $scope.count >= 10) {
        alert("Execute function when if is true");
      }
    }, 1000);
  };
  myFunction();

}]);

以下是一种可能有助于您继续学习的方法:

HTML:

<body ng-app="myApp">
  <div ng-controller="myCtrl">
    <input type='text' ng-model="inpValue" placeholder='Something here' ng-change="myFunction()" />
    <button>Close when it reaches 10
    </button>
  </div>
</body>

完整示例:

尽管问题陈述模棱两可,但这可能是您所需要的

  • 如果在
    输入
    框中未输入任何值,它将在10秒内禁用
  • 如果更改该值,计时器将重置为默认值并重新运行
  • Close-on-10
    按钮也会重置计时器,但一旦单击按钮就会禁用
    。只有当
    输入
    框的值更改时,才会启用
angular.module('myApp',[]).controller('myCtrl',['$scope','$timeout',函数($scope,$timeout){
$scope.count=1;
$scope.inpValue=“”;
$scope.disableInput=false;
$scope.disableBtn=false;
$scope.checkToDisable=函数(){
log($scope.count);
$scope.customTimeout=$timeout(函数(){
如果($scope.inpValue.length==0&&$scope.count==10){
$scope.count=0;
$scope.disableInput=true;
$scope.disableBtn=true;
$timeout.cancel($scope.customTimeout);
}否则{
$scope.count++;
$scope.checkToDisable();
如果($scope.count>10){
$timeout.cancel($scope.customTimeout);
}
}
}, 1000);
};
$scope.resetTimer=函数(){
$scope.count=1;
$timeout.cancel($scope.customTimeout);
$scope.checkToDisable();
};
$scope.checkToDisable();
}]);
按钮{
边界:无;
填充物:5px2px;
边界半径:4px;
盒影:嵌入1px 1px 4px红色;
}
按钮:激活{
背景:橙色;
边界:无;
}

达到10时关闭

这并不能解决您的问题,但是:在angularjs中,您应该使用$timeout服务,而不是setTimeout。Angularjs的更改检测无法正常工作,除非您这样做。当小提琴中的按钮
达到10时关闭的目的是什么?@Sajal应该在单击时调用函数,基本上我可以在输入更改时使用ng change调用myFunction,或者在该按钮上使用ng click调用myFunction。是的,类似的,输入有值后还需要停止计数器,但我可以处理:)ty
angular.module('myApp', []).controller('myCtrl', ['$scope', function($scope) 
{
  $scope.count = 10;
  $scope.inpValue = '';

  function myFunction() {
    setTimeout(function() {
      if ($scope.inpValue.length === 0 && $scope.count >= 10) {
        alert("Execute function when if is true");
      }
    }, 10000);
  };
  myFunction();

}]);