仅对某些操作执行SetTimeout或$ timeout

时间:2015-06-19 17:53:58

标签: jquery angularjs

如何在按钮单击时触发setTimeout或$ timeout。现在,即使我把它放在按钮点击功能中,它也会自行执行,而不是等待点击事件触发它。

$scope.btnClick = function () {
        setTimeout(function () {
            $scope.close();
        }, 1000)
    } 

2 个答案:

答案 0 :(得分:2)

使用$ timeout而不是setTimeout,并在“$ scope.close()”函数中使用$ scope。$ apply()。

注意:如果要查看UI中的更改,可以在函数中使用$ scope。$ apply()。使用console.log()并不能正确证明它;)

答案 1 :(得分:0)

angular.module('app',[]).controller('mainCtrl',['$scope',function($scope){
  $scope.btnClick = function () {
        setTimeout(function () {
            $scope.close();
        }, 1000)
    };
    $scope.close = function(){
      console.log("done");
    };
}]);

<!DOCTYPE html>
<html ng-app="app">

  <head>
    <link rel="stylesheet" href="style.css">
    <script src="https://code.angularjs.org/1.4.0/angular.js"></script>
    <script src="script.js"></script>
  </head>

  <body ng-controller="mainCtrl">
    <button ng-click="btnClick()">Do</button>
  </body>

</html>

这是一个超时工作的片段。 这是plnkr http://plnkr.co/edit/7ZS5TTnCb50nbgBuXqj1?p=preview