2017-02-16 3 views
4

은 내가 SJ을 relaod해야합니다 탭을 struts2-JQuery와 3.3.3에서, 지금까지 내가 시도 :struts2-jquery에서 sj : tab을 다시로드하는 방법 3.3.3?

  • 는 SJ에 listenTopic 추가 : 난 아직 아니었다 읽을 때 탭이 작동하지 않았다 어떤 경우시 해당 버전
  • 구현, 같은 탭 다시로드 :.

$ ('#의 myPanel')를 탭 ("로드", "#myTab");

더 많은 이벤트 처리기가 바인딩되고 sj를 통해 제출할 때 두 번 전송됩니다. 다시로드하기 전에 jquery로 모든 이벤트 처리기를 제거하려고했지만 작성하지 않았습니다. 어떤 차이. 그래서 이벤트 핸들러 exponetially 성장 :

> $('#myPanel').tabs("load", "#myTab"); 
1 event handler per button 
> $('#myPanel').tabs("load", "#myTab"); 
2 
> $('#myPanel').tabs("load", "#myTab"); 
4 .. 16 .. 32 

가 어떻게 SJ의 모든 이벤트 핸들러를 죽이지 않습니다 제출? 내가 응용 프로그램에 새로운 '상태'에 탭을 변경할 필요

+1

안녕하세요, 내가 생각하는 100 현상금을 제공 할 것 너의 q 그것에 대답 할 목적으로 섭정을 다시 편집해야합니다. 좀 더 자세한 내용을 말해줘, 고마워! – mnemosdev

+0

요약하면 사람들이 sj : tabbedpanel에서 탭을 어떻게 다시로드합니까? – user311174

+1

새로 고침 한 콘텐츠에 매번 아약스를 주입합니까? – mnemosdev

답변

0

이 나에게서 아마 나쁜 냄새, 그래서 나는 이것이 좋은 생각이 될 것이라고 생각 :

(ajax call fired by a sj:submit --> POST) 
# in the server check if the state changed, if so returns success and the client asks to reload. 

$.subscribe("change_state"){ 
    ... 
    $('#myPanel').tabs("load", "#myTab"); 
    # (http GET new tab) 
}; 

탭로드 원활 하지만 이전 이벤트를 방지하는 것은 내가 각 버튼

$.subscribe("change_state", function(event){ 
    if (!reloaded){ 
    $('#myPanel').tabs("load", "#myTab"); 
    reloaded = 1; 
    } 
)}; 
$.document.ready(function(){ 
    reloaded = null; 
}); 

에 대한 설정 변수에 있었다 발사 누군가가 스트럿이 버전에 맞는 디자인이 있다면 나는 기꺼이