2015-01-10 6 views
-1

클릭 이벤트를 동적으로 설정하려고합니다. 몇 가지 데이터를 읽고 사실을 되찾은 후에, onclick 이벤트는 dijit/form/Button에서 한 가지 작업을 수행해야하며, false onclick 이벤트가 반환되면 같은 버튼에서 다른 작업을 수행해야합니다.클릭 이벤트를 dojo 버튼으로 동적으로 변경하십시오.

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

      }); 

     }    
    }   

및 이벤트는 연결,하지만 때마다 데이터는 하나 이상의 이벤트가 온 클릭 ADD 인 변경, 그래서 난 버튼을 클릭 할 때 나는 여러 번마다 다음 번에 더 많은 명령 호출합니다. 명령 기능과 마찬가지로 매번 버튼에 추가됩니다.

답변

1

아래와 같이 dojo.connect 코드를 수정해야합니다.

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

      }); 
+0

훌륭한 응답을 주셔서 감사합니다. – astralravenko

관련 문제