Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
684 views
in Technique[技术] by (71.8m points)

angularjs - Issues with getting $timeout function to work

I have created a plunkr with my code that does work. After the drop down is collapsed by clicking the Toggle collapse button, I need the dropdown to close on it's own after 3 seconds. I have played with the following in the HeaderCtrl in example.js with no luck:

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

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

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

Any help/input would be appreciated. Thanks in advance!

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You can just use angular $timeout to achieve the wanted like this:

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

We cancel the timeout each time with $timeout.cancel to prevent multiple hide/shows when button is clicked multiple times.

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...