我已經告訴採用了棱角分明的事件可能是昂貴的(我一直無法驗證)
與工廠或服務應該是「包裝」,以$broadcast
和$on
任何調用注入到其相應的組件保持表現?
再次,我寧願使用$on
,並直接監聽被解僱的事件,而不是創建一個工廠,實質上只是在接收事件時註冊函數來調用 - 讓我們稱之爲調度器。
請注意,它不只是一個監聽'some-event'的組件(指令),會有多種組件監聽這個事件。
實例調度員:
angular.module('app').factory('dispatcher', ['$rootScope', function ($rootScope) {
var registeredFns = [ ];
$rootScope.$on('some-event', function (evt, msg) {
_.each(registeredFns, function (fn) {
fn.apply(null, msg);
});
});
return {
onSomeEvent: function (fn) {
registeredFns.push(fn);
}
};
});
而且,我需要它注入了 - 也許一個指令,也許控制器在以往任何時候都無所謂。
創建性能測試** http://jsperf.com**並更新您發現的內容 – charlietfl
服務將確保您以懶惰方式添加偵聽器;所以你只需要時聽。但我不擔心這一點。過早優化。 – Blaise
@Blaise絕對同意。至於perf我會當我得到一些時間:) –