2014-09-16 2 views
2

Ext.window가 있는데 사용자가 창에서 닫기 버튼을 클릭하거나 기본 [x]를 사용하여 창을 닫으려고하기 전에 확인 메시지를 표시하고 싶습니다. ] 버튼을 누르거나 Esc 키를 누르십시오. 나는이 목적을 위해 다음과 같은 코드를 가지고있다.Extjs : 창을 닫기 전에 확인 메시지가 필요합니다.

   closeWindow: function(){ 
         Ext.Msg.show({ 
         title: 'Confirm or Cancel', 
         msg: 'Are you sure you want to close this window?', 
         buttonText: {ok: 'Yes', cancel: 'No'}, 
         icon: Ext.Msg.WARNING, 
         scope: this, 
         width: 400, 
         fn: function(btn, text){ 
         if (btn == 'ok'){ 
         clearInterval(this.myIntervalTimer); 
         this.cleanEvents(null, null, this.identifier); 
         this.view.destroy(); 
        } else { 
        return; 
       } 
       } 
      }); 
      } 

이 코드는 창에서 닫기 버튼을 클릭하면 올바르게 작동합니다. 그러나 기본 닫기 [x] 또는 esc 키를 누르면 extjs의 비동기 특성으로 인해 확인 메시지가 표시되기 전에 창이 사라집니다. 확인 메시지가 표시되면 창이 없으므로 관련성이 없어집니다. beforeClose 이벤트를 사용해 보았지만 사용하지는 못했습니다.

extjs에서 어떻게 달성 할 수 있는지 제안이나 아이디어?. 덕분에 ...

답변

2

테스트는 다음, 그것은 나를 위해 작동하십시오

Ext.create('Ext.window.Window', { 
     title:'Test' 
     ,width:400 
     ,height:300 
     ,autoShow:true 
     ,listeners:{ 
      beforeclose:function(win) { 
       if(win.closeMe) { 
        win.closeMe = false; 
        return true; 
       } 
       Ext.Msg.show({ 
        title:'Close confirmation' 
        ,msg:'Really close?' 
        ,buttons:Ext.Msg.YESNO 
        ,callback:function(btn) { 
         if('yes' === btn) { 
          win.closeMe = true; 
          win.close(); 
         } 
        } 
       }) 
       return false; 
      } 
     } 
    }); 
+0

나는 이것을 시도하고 당신이 결과를 알려줍니다. 따라서이 리스너는 창이 닫힐 때마다 호출됩니다. 내 창에 닫기 버튼이 있고이 상황에서 close 버튼 핸들러에 대해 어떤 코드가 있어야합니까? 내가이 이벤트에 대해 this.close라고 말하면 확인 메시지가 처음 두 번 표시 될 가능성이 있기 때문입니다. 내 버튼 핸들러에서 this.close() 메소드의 일부로, 그리고 윈도우가 닫히기 전에 일어나는 디폴트 클로즈가된다. – user3546785

+0

버튼 처리기로'win.close()'를 호출하면 충분합니다. 그 이벤트는 'beforeclose' 이벤트를 발생시켜 위의 로직 전체가 실행됩니다. – Saki

+0

감사합니다 사키, 작동했습니다. 고마워요 ... – user3546785

관련 문제