2010-01-16 57 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