2013-07-10 2 views
2

javascript 파일에 사용자 정의 격자를 만들었습니다. 별도의 js 파일에있는 다른 패널에 xtype으로 사용하고 싶습니다. 단일 패널에서 사용하면 잘 작동합니다. 나는 그것이 같은 시간에 다른 패널에 사용하려고 사용할 때, 나는 크롬 개발자 도구 콘솔에서 오류가 말을 얻을 다음과 같이extjs4를 사용한 사용자 지정 구성 요소 재사용

Uncaught TypeError: Cannot read property 'isComponent' of undefined 

내 그리드의 정의는 다음과 같습니다

Ext.define('DataBox.view.FootNotes', { 
    extend : 'Ext.grid.Panel', 
    alias : 'widget.footNotes', 
initComponent : function() { 
    this.columns = [ { 
     header : 'SL', 
     field : { 
      xtype : 'checkbox', 
      checked : 'true' 
     } 
    }, { 
     header : 'Symbol', 
    }, { 
     header : 'Notes', 
    }, ]; 
    this.callParent(arguments); 
} 

});

와 나는 나는 많은 다른 방법이 다른 포럼 토론에 제안 시도 코드

initComponent : function() { 
    /* this.footNotesInfoGrid = Ext.create('DataBox.view.FootNotes', { 
     colspan: 2, 
     border: false, 
     frame: 'false' 
    }); even tried this */ 

    Ext.apply(this,{ 
     items : [{ 
      xtype : 'footNotes', 
      columnWidth : .50, 
      id : 'infoFootNotesGrid', 
     }] 
    } 
    } 

다음을 사용하여 패널의 격자를 포함하는 ...하지만 내 문제는 STIL 지속됩니다. 누군가 내가 잘못 가고있는 부분을 지적 할 수 있습니까?

답변

0

구성 내에 생성 된 개체를 지정하지 마십시오! 그것에 initComponent을 사용하십시오!

plugins : [ Ext.create('Ext.grid.plugin.CellEditing', { 
    clicksToEdit : 1 
}) ], 

어디서나 initComponent 몸에

this.plugins = [ Ext.create('Ext.grid.plugin.CellEditing', { 
    clicksToEdit : 1 
}) ]; 

으로 배치해야하지만, callParent 전에

편집이라고이 라인 :

일에 병이 정적 id 속성을 사용하여 재정의

if(!this.plugins) { 
    this.plugins = [ Ext.create('Ext.grid.plugin.CellEditing', { 
     clicksToEdit : 1 
    }) ]; 
} 

편집

피를 할 수 있습니다! 프레임 워크가 당신을 위해 그 부분을 처리합니다. 대신 Ext.ComponentQuery 주위에 머리를 감싸십시오. 찾고있는 구성 요소를 찾는 데 도움이됩니다.

+0

플러그인 부분을 지적 해 주셔서 감사합니다. 실제로 나는 그것을 정말로 필요로하지 않았다. .. 나는 코드를 삭제하는 것을 잊었다. 지금 그것을 제거했습니다. 나는 initcomponent에 Ext.apply 안에 그리드를 포함시키는 코드를 넣었다. 심지어 격자의 인스턴스를 반환하는 inticomponent 내부의 메서드를 호출 해 보았습니다. 그러나 이들 중 어느 것도 도움이되지 않습니다. – vrush

+0

@vrush이 변경 사항을 반영하기 위해 게시물을 편집해야합니다.) – sra

+0

게시물을 편집하십시오. 제발 봐주세요 – vrush