-1
$scope.$on("stopSpinner", function() {
$('body').mask('hide');
});
上面的代碼工作,當stopSPinner事件被接收時,它會執行。但我的要求是更多的參與。我想在執行一個函數之前等待兩個不同的事件。事件的順序可能不同,但我希望只有在兩個事件都發生後才能執行。這可怎麼achived兩個事件觸發後調用函數
$scope.$on("stopSpinner", function() {
$('body').mask('hide');
});
上面的代碼工作,當stopSPinner事件被接收時,它會執行。但我的要求是更多的參與。我想在執行一個函數之前等待兩個不同的事件。事件的順序可能不同,但我希望只有在兩個事件都發生後才能執行。這可怎麼achived兩個事件觸發後調用函數
使用$ q.all和承諾,像這樣:
var deferred1 = $q.defer();
$scope.$on("stopSpinner", function()
{
$('body').mask('hide');
deferred1.resolve();
});
var deferred2 = $q.defer();
$scope.$on("event2", function()
{
$('body').mask('hide');
deferred2.resolve();
});
$q.all([deferred1, deferred2]).then(
function(){
//your code after the 2 events...
})
這樣一來,你就可以等待2異步任務在一個單一的功能來完成。