2014-01-17 3 views
1

해고 된 extjs 개발자의 프로젝트가 방금 할당되었습니다. 그가 만든 컨트롤러에서 나는게터 및 세터 생성 방법

this.getMyButton().toggle(true); 
this.getMyContainer().getLayout()... 

같은 통화 그래서, 난 그냥보기 (나의 전 동료가 크리스마스에 의해 완료했다해야하는 일 중 하나)에 새 양식을 추가하고에서 호출을 시도 발견 컨트롤러

this.getMyNewForm().loadRecord(someStore.getAt(0)); 

을 사용하고 크롬 this.getMyNewForm()가 정의되지 않은 것을 알려줍니다. 그러나 코드에서 아무 것도 getMyButton()에 대한 정의를 찾지 못했습니다.

무엇이 문제입니까? getMyNewForm()을 어떻게 정의합니까?

편집 : 질문에 대답 (http://docs.sencha.com/extjs/4.2.2/#!/api/Ext.app.Controller-cfg-refs),하지만 여전히 문제가 열려 있습니다.

refs: [{ 
    ref  :'MyNewForm', 
    selector :'form[id=myNewForm]' 
}] 

을하고있는 MyNewForm는

items: [{ 
     xtype: 'form', 
     header:false, 
     frame:false, 
     id:'myNewForm', 
     items: [{ 

보기에 제대로 정의되어 있지만, 당신은 정의해야 내가

init: function() { 
    this.control({ 
    }); 
    this.getMyNewForm().loadRecord(someStore.getAt(0)); 
}, 
+0

먼저, 이미 존재하고있는 것이 아닌, 그리고 어떻게 구현되었는지를 조사해야합니다. – Don

+1

너무 일찍 부르면됩니다. 컨트롤러에 대한'init'는 뷰가 렌더링되기 전에 호출됩니다. –

+0

@EvanTrimboli Thx! 나는 전화를 window.afterrender에 넣었고 지금은 작동한다. 그 질문에 대한 답변을 해 주시겠습니까? :) – Alexander

답변

0

에반 Trimboli는 그것을 대답을하지 않았기 때문에, 내가 그것을 할하자에 extjs 특정"클래스 "수 있습니다 모든보기가 렌더링됩니다. "

0

를 호출 할 때 작동하지 않습니다

참조는 컨트롤러에서 제대로 정의 컨트롤러의 생성자 프로토 타입에이 메서드를 추가합니다. JavaScript 엔진은 getMyNewForm 메소드를 정의하지 않았기 때문에 간단히 설명합니다. 그것은 마법이 아니며 무작위 방법을 호출 할 수 없습니다.

당신은 getMyButton 메서드가 코드에 아무 것도 없다고 말합니다. 그건 불가능합니다. 상속 계층 구조가있는 경우가있을 수 있으며 컨트롤러는 해당 프로토 타입에 해당 메서드를 정의하는 생성자에서 상속받습니다.

getMyNewForm 이젯을 정의하더라도 loadRecord 메서드를 정의하는 "클래스"의 인스턴스를 반환해야합니다. .

"당신은 너무 일찍 호출하고있는 컨트롤러의 init을하는 것은 전에 호출되는이 아마

+0

난 그냥 문서에서 발견, 그것은 마법입니다 : http://docs.sencha.com/extjs/4.2.2/#!/api/Ext.app.Controller-cfg-refs,하지만 내 문제는 아직 풀리지 않았다. 지금 정의 된 ref가 있지만이 메서드는 여전히 사용할 수 없습니다. – Alexander

+0

그것은 마법이 아닙니다! JavaScript의 동적 특성입니다. – ppoliani

+0

크롬 개발자 도구에 예외가 있음을 알 수 있습니까? – ppoliani