2015-12-30 61 views
0

角社區不鼓勵使用$廣播,所以我試圖找到替代方法。需要對這種做法的有效性提出建議。

var deffered = $q.defer(); 

var getPromise = function() { 
    return deffered.promise; 
}; 

var notify = function() { 
    deffered.notify('Hello'); 
}; 

var listenToNotification = function() { 
    getPromise().then({}, {}, function (data) { 
     console.log(data); 
    }); 
}; 

var notify = function() { 
    $scope.$broadcast('someEvent', 'Hello'); 
}; 

var listenToNotification = function() { 
    $scope.$on('someEvent', function (event, data) { 
     console.log(data); 
    }); 
}; 
+0

我不知道你有什麼印象,「角社區不鼓勵使用'$廣播'」。使用'$ broadcast'沒有任何問題,問題是人們在沒有必要的地方使用它。不幸的是,這也是你的問題難以提供答案的原因,因爲你沒有提供任何關於嘗試通知任何事情的實際目的的上下文。 – Claies

+0

我正在使用的代碼高度模塊化。如果用戶在其他模塊上執行任何操作,則需要通知一個模塊。就像用戶打開任何彈出窗口一樣,我需要在後臺暫停視頻。 –

+0

對,這似乎是'$ broadcast'的合理使用。雖然我不確定爲該場景創建一個使用承諾是否有意義。 – Claies

回答

0

角由上做AJAX CRUDs主要和其強大的功能之一就是承諾。但承諾並不意味着像廣播那樣引發事件。 以下是主要區別。

廣播是一件你可以在代碼中註冊某個事件的東西。 承諾是等待它完成並通知你。 所以根據你想做什麼廣播是事件驅動和承諾應該用你的阿賈克斯電話