获取$ timeout功能的问题

时间:2016-05-30 06:30:53

标签: angularjs

我创建了一个带有我的代码的plunkr。通过单击切换折叠按钮折叠下拉菜单后,我需要下拉菜单在3秒后自行关闭。我在example.js的HeaderCtrl中使用了以下内容而没有运气:

function callAtTimeout(){
  $scope.isFooCollapsed = true;
}

$timeout(function(){ 
  !$scope.callAtTimeout();
}, 3000);

http://plnkr.co/edit/wMxA4Tkiqr9BsSfxia02?p=preview

任何帮助/意见将不胜感激。提前谢谢!

1 个答案:

答案 0 :(得分:0)

你可以使用有角度的$timeout来实现这样的想法:

var timer;
$scope.isFooCollapsed = true;
$rootScope.$on("bagNotification", function() {
  $timeout.cancel(timer);
  $scope.isFooCollapsed = !$scope.isFooCollapsed;
  timer = $timeout(function() {
    $scope.isFooCollapsed = true;
  }, 3000);
});

我们每次都会使用$timeout.cancel取消超时,以防止多次点击按钮时出现多次隐藏/显示。

Plunkr:http://plnkr.co/edit/YbsCuicDiHVDGULwpap3?p=preview