2016-05-30 59 views
-4

我已經創建了一個可以工作的代碼的plunkr。通過點擊切換摺疊按鈕摺疊下拉菜單後,我需要下拉菜單在3秒後自行關閉。我打在example.js沒有運氣在HeaderCtrl如下:

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

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

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

任何幫助/輸入,將不勝感激。提前致謝!

+0

你注入'$ timeout'控制器的依賴列表? –

+1

我在plunkr中看不到任何超時代碼? –

+0

嗨TJ。根據你的要求,我用更新後的plunkr編輯了這個問題。謝謝你的幫助。 – user791134

回答

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

+0

非常感謝您的光臨!在我的情況下,不需要取消定時器。因爲即使有人多次點擊切換按鈕,對於我的用例,我實際上也希望下拉列表顯示同樣多的次數。原始答案中的以下普通香草代碼適用於我。再次感謝。任何人在這裏閱讀是我所說的代碼。 – user791134

+0

$ scope.isFooCollapsed = true; $ rootScope在$( 「bagNotification」,函數(){$ = scope.isFooCollapsed $ scope.isFooCollapsed;! $超時(函數(){$ = scope.isFooCollapsed $ scope.isFooCollapsed; }, 3000); }); – user791134

+0

沒問題。很高興聽到你有你想要的,並且我可以對你有所幫助:) – thepio