2012-01-09 4 views
3

나는이 treepanel을 가지고 있으며 내부의 "전체 확장"버튼에서 this.getId() 메서드를 호출하려고합니다. 그러나 나는 정의되지 않은 메서드입니다. scope:this을 설정했지만 성공하지 못했습니다. extjs의 범위 문제 4

Ext.define('MA.view.patient.Tree', { 
extend : 'Ext.tree.Panel', 
alias : 'widget.EditPatientTree', 
title : 'Simple Tree', 
width : 150, 
store:'Tree', 
dockedItems : [ { 
    xtype : 'toolbar', 
    items : [ { 
     text : 'Expand All', 
     scope: this, 
     handler : function() { 
    //this.expandAll gives "Uncaught TypeError: Object [object DOMWindow] has no method 'getId'" 
      this.expandAll(); 
    //the same error for this.getId(); 
      this.getId(); 
     } 
    } ] 
} ], 
rootVisible : false, 
initComponent : function() { 
    this.callParent(arguments); 
} 
}); 

그래서 제 질문은 현재 구성 요소에 대한 참조를 얻을 당신이

답변

3

핸들러는, (1)에 전달되는 인수가 전류 성분의 중첩 방법이나 설정 객체 내부에있는 동안 메서드를 호출하는 방법입니다 그것들은 일반적으로 버튼입니다. 버튼에서 컨테이너를 가져올 수 있습니다.

Ext.define('MA.view.patient.Tree', { 
extend : 'Ext.tree.Panel', 
alias : 'widget.EditPatientTree', 
title : 'Simple Tree', 
width : 150, 
store:'Tree', 
dockedItems : [ { 
    xtype : 'toolbar', 
    items : [ { 
     text : 'Expand All', 
     scope: this, 
     handler : function(button, event) { 
      var toolbar = button.up('toolbar'), treepanel = toolbar.up('treepanel'); 
      treepanel.expandAll(); 
      treepanel.getId(); 
     } 
    } ] 
} ], 
rootVisible : false, 
initComponent : function() { 
    this.callParent(arguments); 
} 
}); 
1

당신은 부모 또는 자녀 구성 요소의 참조를 얻기위한 up, down 같은 방법을 사용할 수있다. 당신이 자식 참조 잡아의 down 방법을 사용할 수 있습니다, 마찬가지로

myTree = this.up('treepanel'); 

: 귀하의 경우에, 당신은에 의해 나무 패널의 참조를 얻을 수 있습니다.