角度一:javascript超时函数
我试图根据输入值调用函数。 该场景将是:如果10秒钟内没有人在该输入中添加内容(因此该值将为空),则禁用该输入。 我想使用ng更改或类似的角度方法,而不是任何“键盘键”条件 现在要做的第一件事是在点击按钮时将计时器设置为0,然后计数到10角度一: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 = '';
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();
}]);