2014-07-07 5 views
0

내 4.2.1 ExtJS 응용 프로그램에서 모든 Ajax 요청 ()을 수신하므로 사용자 정의 오류 처리 및 기타 작업을 수행 할 수 있습니다. ExtJS call controller method in Ext.util.Observable.observe

는 임 함수의 scopedata.Connection 때문에 me.fireEvent(...)하지만 fireEventundefined 인 일을하려고 내 Main Controller

Ext.define('App.controller.Main', { 
     extend: 'Ext.app.Controller', 


     init: function (application) { 

      var me = this; 

      this.control({ 
       '[xtype=login] button#btnLogin': { 
        click: me.onLogin 
       }, 
      }); 

      Ext.util.Observable.observe(Ext.data.Connection, { 
       requestcomplete: function (conn, response, options) { 
        // Do stuff on success 
       }, 
       requestexception: me.handleRequestException // Do stuff on failure 
      }); 

     }, 
     handleRequestException: function (conn, response, options) { 

      var me = this; 

      if (response.status == 401) { 

       // here i need to fire the logoutApplication method 

       // have tried: me.fireEvent('logoutApplication'); but fireEvent is undefined because "me" scope is data.Connection 
       // it doesnt know about the controller. 

      } 


     }, 
     logoutApplication: function() { 
      var me = this; 

      // do somestuff here!! 

     } 

handleRequestException 함수 내에서 임 내에서 그 일을. init가 트리거 내가 이벤트가 두 번 발사 문제를 얻을 것을 호출 할 때하기 때문에

var mainController = App.app.getController('App.controller.Main'); 

을 : 내가 할

는 사용하지.

Im ExtJS에 새롭게 추가되었습니다. 이렇게하는 것이 더 좋은 방법 일 것입니다. 모든 조언을 감사하십시오.

답변

0

당신은 청취자 구성에 scope를 추가 할 수 있습니다

Ext.util.Observable.observe(Ext.data.Connection, { 
    requestcomplete: function (conn, response, options) { 
     // Do stuff on success 
    }, 
    requestexception: me.handleRequestException, // Do stuff on failure 
    scope: me // add the scope here 
}); 

이제 청취자가 그 범위를 대신 발신자 범위와 실행 얻을.

+0

고마워요 ... 끝내 솔루션 :) – VAAA

+0

나는 내 머리를 부러 뜨리는 extjs 질문을 만듭니다. 확인해 주시겠습니까? http://stackoverflow.com/questions/24978039/extjs-4-2-datepicker-multiselect-catch-event-in-controller – VAAA