2010-01-16 23 views
0

我想在選擇事件中添加監聽器,但通過下面的代碼實現觸發事件兩次。只有JavaScript核心onClick事件被正確觸發一次。djit.layout.Tabcontainer - 基於點擊的事件被激發兩次

dojo.connect(myTabCont, "onButtonClicked", function(tabList){ 
    console.log(tablist); 
}); 
dojo.connect(myTabCont, "selectChild", function(tabList){ 
    console.log(tablist); 
}); 

//work fine - one click one fire 
dojo.connect(myTabCont, "onClick", function(event){ 
    console.log(event); 
}); 

是否有功能或錯誤?或者你能幫助如何解決這些funcionality或方式如何打破這個功能||錯誤。

謝謝

+0

我不明白你爲什麼連接到onButtonClicked,是不是selectChild夠了? – Kniganapolke 2010-01-18 08:29:15

+0

那麼,因爲我發現如何將事件連接到小部件,並在測試過程中試圖找到一種方法來解決問題。這只是爲了測試。 – tomascejka 2010-01-30 07:13:37

回答

0

您可以監視 [爲widgetid] -selectChild主題, 只會觸發一次,或只是忽略 myTC.selectChild(富)調用時富 == myTC.selectedChildWidget。

Stack_Container.selectChild方法中的舊選擇和新選擇之間的等於檢查是可以的!

沒有錯誤。註冊「selectChild」被稱爲兩次,這是正確的行爲。首先調用「selectChild」是由用戶觸發的事件,第二個調用是編程式的,當StackContainer檢查舊選擇NOT是否等於new-selection並顯式激發tabItem上的onclick時。

0

聽起來像一個錯誤。 selectChild()是冪等的,所以調用它兩次沒有什麼壞處(除了像你這樣的連接它的人:-)),所以我們沒有注意到這個問題。

您可以監視[widgetId] -selectChild主題,該主題只會觸發一次,或者在foo == myTC.selectedChildWidget時忽略myTC.selectChild(foo)調用。

+0

我要監視這個狀態,但是我認爲這並不是一個大問題,除非您構建UI,其中小部件中的所有內容更改均通過ajax請求進行管理。順便說一下 - dojo框架是功能強大的工具包,很棒的工作。 – tomascejka 2010-01-30 06:59:48

+0

Stack_Container.selectChild方法中的舊選擇和新選擇之間的等於檢查是可以的! 沒有錯誤。註冊「selectChild」被稱爲兩次,這是正確的行爲。首先調用「selectChild」是用戶觸發的事件,第二個調用是編程式的,當StackContainer檢查舊選擇NOT是否等於新選擇時。 – tomascejka 2010-01-30 16:38:59