我的Sencha Touch 2應用程序非常複雜。所以我不能在這裏展示整個代碼片段,我將簡要描述我應該做的事情。 在我的應用程序,我有以下全局結構:Sencha Touch 2 Overlay的showBy()功能很慢
- mainContainer上
- 基於鏈接的實例
- 不同的面板
Cardswitch中的一個鏈接面板是主面板。該面板具有以下結構:
- mainContainer上
- 面板左(佈局VBOX)
- 三個面板
- 面板右(佈局VBOX)
- 面板與數據視圖
- (*我的問題面板)動態生成面板分段按鈕
- 面板左(佈局VBOX)
,一切工作正常。 「問題面板」中的動態按鈕將通過基於商店數據的控制器啓動功能生成。每個按鈕被設計並填充一些html自定義圖像。
現在我的問題: 每個按鈕還提供了一個tap功能。這個功能應該會彈出一個基於按鈕位置的覆蓋圖。所以在我的控制器功能,其中產生的按鈕,我有類似的一些代碼:
...
var panel = this.getContent();
var overlay = Ext.create('MyApp.view.Overlay');
panel.add(overlay);
...
正如你所看到的,我是覆蓋一個單獨的類。 var面板是顯示按鈕的「問題面板」。在按鈕項輕點功能(效果很好)的代碼如下:
listeners: {
tap: function() {
//overlay.showBy(this);
overlay.show();
}
}
和覆蓋代碼:
Ext.define('MyApp.view.Overlay', {
extend: 'Ext.Panel',
alias: 'widget.Overlay',
config: {
centered: true,
height: 200,
hidden: true,
html: 'This is just a overlay',
id: 'pOverlay',
ui: 'light',
width: 200,
hideOnMaskTap: true,
modal: true
}
});
如果我做了
panel.add(overlay);
和只需撥打水龍頭功能
overlay.show();
一切都很好,但速度很快,但疊加層不會彈出相對於按下的按鈕。所以我想用
overlay.showBy(button);
但是,如果我這樣做,覆蓋大約需要超過兩秒鐘彈出,速度很慢(使用Windows 7 @quadcore鉻)。我使用煎茶觸摸2.0.1.1 我希望當我添加疊加層,而不是將它添加到面板的視口,然後調用顯示:
//panel.add(overlay);
Ext.Viewport.add(overlay);
...
overlay.show();
它不會出現那麼快因爲我將它添加到面板。 我需要showBy()的功能,但比我的應用程序快得多。我能做什麼?我在整個應用程序中是否有錯誤?還要別的嗎? 我希望你傢伙能幫助我,因爲我用這個簡單的疊加處理各地超過三一天的....
編輯: 爲了測試我用我的主面板(包括問題面板)作爲初始視圖因此它不包含在Cardswitch容器中。之後,我完成了一個showBy(),當整個面板包含在卡片開關中時,它比以前快得多。它不會像使用show()函數那樣快速彈出 ,但它沒問題。但這仍然不是我的解決方案,因爲我需要嵌入面板。
我也用一個簡單的選擇字段有兩個選項嘗試。選擇字段也使用Overlay來顯示選項,選擇字段與我自己的問題面板中的疊加一樣慢。 :(
編輯2: 我發現,問題就在這裏的一個類似的描述:http://www.sencha.com/forum/showthread.php?203501-ShowBy-with-Flexed-panels-and-a-box-layout-popup-is-slow 但在該線程的變通辦法不爲我工作,我怎樣才能使與選擇欄的項目列表中的覆蓋是。顯示在屏幕中間,而不是使用showBy()?