【问题标题】:Angular, disable a button and then activate it using setTimeout in javascript?Angular,禁用一个按钮,然后在javascript中使用setTimeout激活它?
【发布时间】:2015-09-14 15:19:57
【问题描述】:

我想禁用我的按钮,然后在几秒钟后激活它。代码确实运行但即使在我的代码执行后按钮仍然被禁用。

app.controller('spamController', ['$scope', function($scope) {


$scope.stopSpam = false;
  
function activateBtn(){
  $scope.stopSpam = false;
};


$scope.test = function(){
  
  $scope.stopSpam = true;
  activateBtn();

};

}]);
<button ng-disabled="stopSpam" class="btn btn-default" ng-click="test()">Test</button>

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    使用$timeout 并在几秒钟后调用activateBtn

    app.controller('spamController', ['$scope', '$timeout', function($scope, $timeout) {
        $scope.stopSpam = false;
    
        function activateBtn(){
            $scope.stopSpam = false;
        };
    
    
        $scope.test = function(){
            $scope.stopSpam = true;
            $timeout(activateBtn, 3000);
        };
    }]);
    

    【讨论】:

    • 如果我使用纯 JavaScript 超时而不是 $timeout 为什么它不起作用?
    • 因为setTimeout 不会触发$digest 循环 - 这是更新视图的原因。
    • 可以在setTimeout中调用$scope.$apply()。
    • @dustmouse -- 你可以,但这被认为是不好的做法。
    猜你喜欢
    • 2021-07-30
    • 2015-12-07
    • 2023-03-20
    • 2019-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-15
    • 1970-01-01
    相关资源
    最近更新 更多