2013-07-01 4 views
1

새로운 요소를 추가하는 버튼과 요소를 편집하기위한 행이있는 테이블이 있습니다. 이러한 동작은 편집 모드에서 양식이 채워진다는 유일한 차이점과 동일한 양식을 공유합니다. 사용자가 버튼을 클릭하면 새 창이 양식과 함께 표시됩니다.Extjs4의 두 개의 다른 창에서 같은 양식을 사용할 수 있습니까?

버튼을 처음 클릭하면 예를 들어 새 요소를 추가 할 때 정상적으로 작동합니다. 양식이 표시됩니다. 하지만 ... 내가 창을 닫고 사용자를 편집하려고하면 내용 및 오류없이 임시 창이 표시됩니다. "TypeError : b is null" 양식 정의에 문제가 있습니까? 창과 함께 양식의 소유권이 삭제 된 것일까 요? 내가 그를 편집 할 행에서 사용자와 다른 버튼을 추가하기 위해 창을 보여 그리드의 tbar에 버튼이

var formPanel = Ext.create('Ext.form.Panel',{ 
    extend: 'Ext.form.Panel', 
    id: 'policyForm', 
    ... 

:

나는 VAR에 정의 된 양식을했습니다 .

handler : function(){ 
    Ext.create('Ext.window.Window',{ 
     layout: 'fit', 
     title: 'New Policy', 
     items: [formPanel], 
     width: 650, 
     height: 500, 
     id: 'myPolicyWindow' 
    }).show(); 
} 

답변

2

당신이 당신의 패널 및 창 코드에서 설정 한 그 id의 당신이 다른 창에서 동일한 양식을 다시 사용할 수 없습니다 원인이되는 가능성이 높다 :이 버튼의 핸들러입니다. Ext 구성 요소에 id 속성을 사용하지 않으려면 ID가 고유해야하므로이 문제가 발생할 수 있습니다. 을 사용하지 않고 구성 요소에 대한 참조를 가져올 수 있으려면 속성을 Ext.ComponentQuery과 함께 사용하십시오.

+0

감사합니다. kevhender. ID를 삭제하고 사용자 정의 양식을 정의한 다음 내 창에 다른 인스턴스를 작성했습니다. 더 이상 id 속성을 사용하지 않겠습니다. 어쨌든 itemId를 사용하여 요소를 설정하면 인스턴스를 가져 오기 위해 어떻게 호출 할 수 있습니까? – mannuk

+0

관계를 기준으로 구성 요소를 탐색하려면 구성 요소 쿼리를 사용해야합니다. 'itemId'를 사용할 때, 당신의 컴포넌트 쿼리에서'#'기호를 사용하십시오 :'parentCmp.down ('# childCmpId')'. docs (http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.ComponentQuery)를 참조하십시오. – kevhender

+0

감사합니다. @kevhender. jquery처럼 보입니다 :) – mannuk

1

본인은 ID를 사용하지 않는 데 동의합니다. 그러나 실제 문제는 아마 당신이 의심하는 것입니다 : 양식의 인스턴스가 파괴되고있다. 기본 closeActionExt.window.Window 인 경우 "파괴"로 설정되어 있기 때문에 모든 하위 구성 요소도 삭제됩니다. closeAction을 "숨김"으로 변경하거나 새 창 인스턴스와 함께 양식 패널의 새 인스턴스를 만듭니다.

+0

답장을 보내 주셔서 감사합니다. @existdissolve – mannuk

관련 문제