2013-04-30 1 views
1

컨트롤러에 하나의 기능이 있습니다. 값을 리턴합니다. 보기에서 해당 함수를 renderer:this.getController('test.controller.Barchart').change();을 사용하여 호출했지만 작동하지 않습니다. 오류가 발생하여 바람이 불지 않습니다. getController(). 아무도 그것을 정확하게 부르는 법을 말해 줄 수 있습니까?내선보기에서 컨트롤러 기능 호출 방법

+1

YOU_APP_NAME.app.getController ('MyController') –

답변

5

아래의 솔루션을 참조하십시오 !!!

var ControllerRef=<applicationreference>.getController(<ControllerfolderPath>.controllerName); 
ControllerRef.<ControllerFunction>(); 

예 :

var MyApp = Ext.create('Ext.app.Application', { 
       ...... 
       ...... 
      }); 

var ControllerRef = MyApp.getController('general.ManagerController'); 
ControllerRef.MyFunction(); 

감사

+2

보기에서 인스턴스 MyApp를 만들 필요가 있습니까? MYApp이 정의되지 않았습니다. – mohan

0

이 시도 : 당신은 너무처럼 app.js에 전역 변수로 컨트롤러를 넣을 수 있습니다 :

Ext.define('MySharedData', { 
    my_Controller:Object 

}); 

을에서 귀하의 컨트롤러 :

MySharedData.my_Controller=this.getController('<ControllerfolderPath>.controllerName'); 

다음보기에서 원하는 함수를 호출

MySharedData.my_Controller.my_Function(); 
5

을 컨트롤러가 고려 뷰 호출 악마의 본질을 가졌어요. 뷰는 컨트롤러를 인식해서는 안됩니다. 저는 ExtJS를 사용하는 대규모 프로젝트의 선두 주자입니다. 뷰의 JSON 설명 이외에 다른 뷰에서는 아무것도 허용하지 않습니다. 컨트롤러를 찾는 논리는 컨트롤러 자체에 있어야합니다.

+1

ExtJS를 배우고 일한 이래로 저는 오래 전부터 질문을했습니다. 컨트롤러를 호출하지 않고 뷰 수신기 이벤트를 어떻게 처리합니까? 그리드가 있고 행 선택 이벤트에 컨트롤러 함수를 실행하고 싶습니다. 뷰 수신기에서 컨트롤러를 호출하지 않고 어떻게합니까? – CrazySabbath