2014-03-12 27 views
1

我有一個建立在ExtJS上的現有應用程序。我們有跨多個視圖的按鈕。我們有一個變更請求,無論何時點擊一個按鈕,在實際邏輯觸發之前都應該調用某個函數。此函數調用適用於所有按鈕單擊事件。
我們如何在ExtJS中處理這種情況?如何在extjs 4.0中爲按鈕創建類似於攔截器的功能?

+0

在您當前的情況下,處理程序/偵聽器如何連接? – A1rPun

+0

在控制器中,我們向每個控件添加了引用,並將方法調用綁定到了單擊監聽器。 – rajmalhotraml

+1

看看[this](http://stackoverflow.com/questions/12902515/bind-click-event-for-all-buttons在應用程序)解決方案。 – A1rPun

回答

1

什麼阻止您將始終調用的函數添加到每個偵聽器。

click: function(btn) { 
    functionThatAlwaysRuns(); 
    // rest of your button specific logic here 
} 

這聽起來像是代碼,您可以通過把所有的按鈕,一個共同的聽衆在控制器,並使用策略模式,以確定通用的功能之後要運行的特定邏輯雖然顯著清理。一個很好的例子可以在這裏找到策略模式:http://encosia.com/first-class-functions-as-an-alternative-to-javascripts-switch-statement/