x秒后禁用按钮

时间:2015-07-27 17:03:37

标签: javascript angularjs

我正在使用angularjs,我有一个创建票据的按钮,这个工作与http请求,用于调用php web,问题是http请求延迟x秒,人们可以在这里做出这么多点击延迟,结果,varius tickes创建,只有1个工作,他们我需要延迟按钮,但我不能使这个工作,请检查这个并注意解决方案应该在request {{3}之外}

2 个答案:

答案 0 :(得分:2)

Angular为此提供了$timeout服务组件:

$timeout(function() {
    $scope.betDelay=false;
}, 1000);

除此之外,当您使用$timeout帮助程序时,它会自动为您执行脏模型检查(默认情况下,当您使用默认的window.setTimeout()时,它会发生)。

基本上,Angular不会不断检查$scope是否已经改变;它只检查组件生命周期中的关键点,$ timeout帮助您进入该生命周期。

请参阅更新后的JSFiddle:http://jsfiddle.net/Lt7aP/862/

作为替代方案,您还可以明确告诉$scope它需要通过$apply()执行脏检查。如,

setTimeout(function() {
    $scope.betDelay=false;
    $scope.$apply();
}, 1000);

示例:http://jsfiddle.net/Lt7aP/863/

答案 1 :(得分:0)

我对你的帖子的理解是,用户可以多次点击登录按钮,制作多个重复的条目(API没有时间检查现有记录,因为它被击中的速度非常快)。

我们通过检查按钮是否已被点击来处理此问题。创建一个名为man bash的变量并将其设置为false。检查onClick是否为false。如果为false,则将其设置为true并发出请求。

$scope.isButtonClicked

http://jsfiddle.net/obohxukw/2/