2012-07-10 5 views
0

Sencha Touch 2 프레임 워크를 사용하여 템플릿에서 패널을 만들려고하는데 약간 문제가 있습니다.Sencha Touch - 템플릿 아래에 버튼 표시

Ext.define('GS.view.Home', { 

extend: 'Ext.Panel', 

config: { 
    title: 'Home', 
    items: [ 
     { 
      xtype: 'panel', 
      html: [ 
       '<img src="resources/images/someImage.gif"/>', 
       '<h1>A Header</h1>', 
       "<p>some text</p>" 
      ].join("") 
     }, 
     { 
      xtype: 'button', 
      text: 'Click Me', 
      ui: 'forward' 
     } 
    ] 
} 
}); 

렌더링 할 때 다음과 같습니다 :

button on bottom 것 대신에 템플릿이 사용하는 HTML의 예 - 내가 뭘하려는 아래 버튼 다음에 HTML 템플릿을 표시입니다

대신 템플릿을 사용하여 패널을로드하지만 그 아래에 버튼이 있습니다. 내 코드는 현재이 같은 같습니다

var tpl = new Ext.XTemplate(
    '<img src="resources/images/someImage.gif"/>', 
    '<h1>A Header</h1>', 
    '<p>some text</p>', 
    { 
     // XTemplate configuration: 
     compiled: true 
    } 
); 
Ext.define('GS.view.Home', { 

    extend: 'Ext.Panel', 
    xtype: 'home', 
    config: { 
     title: 'Home', 
     tpl: tpl, 
     data: [], 
     items: [ 

      { 
       xtype: 'button', 
       text: 'Click Me', 
       ui: 'forward' 
      } 
     ] 
    } 
}); 

을하지만이 템플릿 HTML 위에 배치되는 버튼 결과 :

enter image description here

가 나는 또한 함께 항목의 배열에 패널을 추가하려고했습니다 tpl 값을 템플릿으로 설정하지만 HTML이 전혀 렌더링되지 않습니다.

누구나 템플릿을 사용할 수 있지만 하단에는 버튼이 있습니다. 귀하의 대답은 템플릿 html로 올바른 클래스 이름을 가진 버튼을 포함하는 것입니다 어떻게 컨트롤러로 다시 연결합니까? (일반적으로 itemId 구성 등록 정보를 사용합니다).

건배,

제임스

답변

2

이 당신의 두 가지 접근 방식의 차이가 있습니다 : 첫 번째는 HTML과 판넬을 포함하는 패널을 가지고 있으며, 버튼을 .. 두 번째는있다 html과 버튼이 둘 다 포함 된 패널 (그리고 나는 sencha가 html을 버튼 아래 놓는다 고 추측한다). 트릭을 할해야 하단 솔루션에 두 개의 패널을 사용하여

:

Ext.define('GS.view.Home', { 

    extend: 'Ext.Panel', 
    xtype: 'home', 
    config: { 
     title: 'Home', 
     items: [ 
      { 
       xtype: 'panel', 
       tpl: tpl, 
       data: [], 
      }, 

      { 
       xtype: 'button', 
       text: 'Click Me', 
       ui: 'forward' 
      } 
     ] 
    } 
}); 
+0

안녕하세요, 감사는 대답 -받는 패널을 추가 - 나는 기본적으로 내가 시도했던 말 된 방법 중 하나라고 생각 items 배열을 만들고 tpl을 사용합니다. 이 방법을 사용할 수없는 이유는이 뷰가 목록의 요소를 클릭 한 결과로 컨트롤러 (목록보기의 컨트롤러)에서 호출 되었기 때문입니다. I는 다음과 같이이 도면에 목록 데이터를 건네 \t \t this.getMain() 푸시 ({ \t \t \t 위해 xtype '은 DetailsView' \t \t \t 데이터 : record.data \t \t}).; 그게 말이 되니? 그래서 위의 예제처럼 items 배열에 패널을 사용하면 데이터 속성을 채우는 방법을 모르겠습니다. –

+0

아, 나는 그 부분을 얻지 못했습니다. "올바른"방법은 상점을 사용하는 것입니다. 그러나 나는 그것이 상황을 복잡하게 만들고 대부분의 상황에서 잔인하다는 것을 처음으로 인정할 것입니다. "해킹"하는 방법에는 두 가지가 있습니다. 먼저보기를 밀고 패널에 대한 참조를 가져옵니다 (그냥 ID를주고 Ext.getCmp (id)로 가져 오기). 다른 방법도 있습니다. id를 복제하기 위해 실행) setData()를 사용하거나 2) 데이터를 메인 패널 대신 하위 패널에 설정하는 applyData() 함수를 뷰에 추가하십시오. 개인적으로 나는 후자의 접근 방식을 선호한다. 그게 당신에게 효과가 있는지 알려주세요. – Claude

+0

쿨 - 고마워, 클로드. 지금 매장을 사용하고 있습니다. 더 의미가 있습니다. 다시 한 번 감사드립니다. –