2010-08-07 4 views
0

(적용에 의해 추가 도구 모음)에 findById 메소드를 호출 할 수 없습니다, 그것은을 통해 추가 그래서 (요약 된 코드, 원본과 관련이없는 물건 많이)과 같이 적용된다의 ExtJS : 나는 그것에 도구 모음이있는 페이지가

var obj = Ext.extend(Ext.Panel,{ 
    initComponent:function(){ 
     Ext.apply(this,{ 
      layout:'card', 
      itemId:'contactDetails', 
      border:false, 
      activeItem:0, 
      tbar: new Ext.Toolbar({ 
       items:[{text:'New'},{text:'Edit',id:'editButton'}] 
      }) 
     }); 
     obj.superclass.initComponent.apply(this); 

    }, load:function() { 
     this.tbar.findById('editButton').toggle(false); //Javascript error here about findById not being a function. 
    } 
    }); 

위의 구문이 올바르지 않을 수 있습니다. 그것은 내 코드에 있습니다 (적어도 큰 것을 제외하고는 자바 스크립트 오류가 발생하지 않습니다).

+0

로드 기능을 호출하는 시점에서 렌더링 되었습니까? –

+0

예, 페이지의 다른 버튼에 의해로드가 트리거됩니다. –

답변

0

우선 기본 구성을 제공하기 위해 initComponent를 재정의 할 필요가 없습니다. 이 같은 방식으로 작동하고 간단합니다 :

var obj = Ext.extend(Ext.Panel,{ 
    layout:'card', 
    itemId:'contactDetails', 
    border:false, 
    activeItem:0, 
    tbar: new Ext.Toolbar({ 
     items:[{text:'New'},{text:'Edit',id:'editButton'}] 
    }) 
}); 

이 또한 문제를 해결할 수 있습니다 - 당신은 당신의 코드에서 initComponent 함수를 오버라이드 (override)되어 있기 때문에, (내 이전 대답을 스크래치, 난 당신의 코드를 오해.) 메소드 내에서 슈퍼 클래스 initComponent를 호출해야합니다. 그렇지 않으면 사물이 작동하지 않습니다. 코드를 initComponent 함수를 재정의하는 경우 당신은이 일을해야합니다

또한
initComponent: function(){ 
    Ext.apply(this,{ 
     layout:'card', 
     itemId:'contactDetails', 
     border:false, 
     activeItem:0, 
     tbar: new Ext.Toolbar({ 
      items:[{text:'New'},{text:'Edit',id:'editButton'}] 
     }) 
    }); 
    obj.superclass.initComponent.apply(this, arguments); 
} 

, 당신은 실제로 어떤 이유로 기존의 Panel.load() 방법을 재정의? 아니면 다른 기능을 추가하려고하고 실수로 기존 메서드 이름을 선택 했습니까?

EDIT : 유효한 속성으로 렌더링 한 후에는 tbar 구성을 사용할 수 없습니다. tbar에 대한 문서에서 : "렌더링 후 상단 툴바에 액세스하려면 getTopToolbar을 사용하십시오"

+0

흠 ... 이것은 사실 상속 된 코드이며, 나는 ExtJS 경험이 0이므로, 정말 쉬운 해결책을 기대하고있었습니다. 그래도 나는 당신의 단순한 솔루션을 다 다루었다고 생각합니다. 나는 방금 그들을 버렸습니다. 이 사실을 반영하도록 원래 게시물을 업데이트하겠습니다. –

+0

오, 솔직히로드 메소드로 어떤 일이 일어나고 있는지 모르겠다. 나는 호출 될 때까지 실행되지 않는다는 것을 안다. –

+0

Ext.apply로 물건을 정의한 후에 * 슈퍼 클래스를 호출하면 안 되는가? – ob1

관련 문제