2014-10-03 154 views
2

在我的應用程序中,我正在定義一個自定義事件,我希望其中有默認處理程序。如果任何控制器/服務想要重寫默認處理,他們可以通過添加它們自己的處理程序來完成。Angular:自定義事件處理程序和默認處理程序的順序

爲了實現這種情況,我在$ rootScope上添加了默認處理程序&在$ rootScope上廣播了事件。我期待着像下面的工作。

//defined in .run block 
$rootScope.$on('customEvent', defaultHandler); 

//defined inside a controller 
$scope.$on('customEvent', function customHandler(e){ 
    // handle event 
    e.preventDefault(); 
}); 

我的問題是,因爲.RUN塊被執行在執行任何控制器之前,將始終的DefaultHandler首先得到註冊。因此,它首先被執行&然後執行自定義處理程序。我想最後執行defaultHandler。

我想避免添加我自己的維護事件處理程序列表&的邏輯,確保它們按所需順序執行。有沒有辦法實現這個角度?謝謝。

回答

1

角度上的'優先'的唯一概念,據我所知,來自'指令',並在哪些序列他們編譯/鏈接。

這樣做的黑客方式將放入事件處理程序中,並在該範圍內的指令中排列,並以表示您訂購的任何優先級對其進行排序。

+0

在我的情況下,由於事件處理程序可能跨越視圖和控制器,指令的使用是不可能的。我最終爲自定義事件創建了自己的自定義事件隊列。 – Nilesh 2015-01-23 18:38:44