2012-07-10 63 views
0

我試圖從使用Sencha Touch 2框架的模板創建面板,但我遇到了一些麻煩。我想要做的是顯示HTML模板,然後下方的按鈕 - 這一點使用HTML,而不是一個模板的一個例子是:Sencha觸摸 - 在模板下面的顯示按鈕

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

我想要做的是使用模板加載面板,而不是在底下有一個按鈕。我的代碼目前看起來是這樣的:

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。我無法實現這種方法的原因是因爲點擊列表中的一個元素而從控制器(列表視圖的控制器)調用此視圖。然後我的列表數據傳遞到該視圖中,像這樣:\t \t this.getMain()推({ \t \t \t的xtype: '的DetailsView', \t \t \t數據:record.data \t \t})。這有道理嗎?所以我不知道如何在項目數組中使用面板來填充數據屬性,就像上面的例子一樣。 – 2012-07-10 20:21:08

+0

啊,我沒有得到那部分。 「正確」的方式是使用商店。但我會首先承認,這使事情變得複雜,而且在大多數情況下都是過度的。有兩種方法可以「破解」它:首先推送視圖,然後獲得對面板的引用(只要給它一個id,然後用Ext.getCmp(id)獲取它) - 如果你有其他方法運行以複製id's)並使用setData(),或者2)在視圖中添加一個applyData()函數,該函數將數據設置爲子面板而不是主面板。我個人更喜歡後一種方法。讓我知道這是否適合你。 – Claude 2012-07-10 21:28:20

+0

酷 - 謝謝克勞德。我現在正在考慮使用商店 - 更有意義。再次感謝 – 2012-07-11 07:45:54