djit.layout.Tabcontainer - 基于点击的事件被触发两次

时间:2010-01-16 15:58:15

标签: dojo dijit.layout

我想在选择事件上添加侦听器,但是通过下面的代码实现了两次触发事件。只有javascript核心onClick事件被正确触发一次。

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);
});

是否有功能或错误?或者你可以帮助解决这些功能或如何打破这个功能||错误。

由于

2 个答案:

答案 0 :(得分:0)

听起来像个臭虫。 selectChild()是幂等的,因此调用它两次没有任何害处(除了像你这样连接它的人:-)),这就是为什么我们没有注意到这个问题。

你可以监视[widgetId] -selectChild主题,它只会触发一次,或者在foo == myTC.selectedChildWidget时忽略myTC.selectChild(foo)调用。

答案 1 :(得分:0)

  

你可以监控   [widgetId] -selectChild主题,其中   只会发射一次,或者只是忽略   myTC.selectChild(foo)在foo时调用   == myTC.selectedChildWidget。

Stack_Container.selectChild方法中旧选择和新选择之间的等号检查是可以的!

没有错误。注册的“selectChild”被调用两次,这是正确的行为。第一次调用“selectChild”是由用户触发的事件,第二次调用是编程式的,当StackContainer检查old-selection NOT是否等于new-selection并且明确地激活onIlick上的tabItem时。