将点击事件动态更改为 dojo 按钮

change a click event dynamically to dojo button

我正在尝试动态设置点击事件。在我读取一些数据并返回 true 之后,onclick 事件需要在 dijit/form/Button 上做一件事,当我返回 false 时,onclick 事件需要在同一个按钮上做另一件事。

if(m_test==true){
        if(dojo.byId(tmp_tst_button)){
            dojo.removeClass(tmp_tst_button,'button_fr');
            dojo.addClass(tmp_tst_button,'button_fr_toggle');

            var change_on_click = dojo.byId(tmp_tst_button);
            dojo.connect(change_on_click,'onclick',function(){
                command(tmp_binary_off);

            });
        }            
    }
    else{
        if(dojo.byId(tmp_tst_button)){
            dojo.removeClass(tmp_tst_button,'button_fr_toggle');
            dojo.addClass(tmp_tst_button,'button_fr');

            var change_off_click = dojo.byId(tmp_tst_button);
            dojo.connect(change_off_click,'onclick',function(){
                command(tmp_binary_on);

            });

        }            
    }        

并且事件已连接,但每次更改数据时都会添加一个事件 onclick,因此当我单击按钮时,我会多次调用命令,并且每次都会调用越来越多的命令。喜欢命令功能每次都附加到按钮。

您需要修改您的 dojo.connect 代码,如下所示。

var handle = dojo.connect(change_on_click,'onclick',function(){
                command(tmp_binary_off);
                // disconnect after use.
                dojo.disconnect(handle);

             });