簡體   English   中英

銷毀面板中的方法

[英]Destroy method in form panel

我正在使用Cordova API捕獲地理區域,然后成功地將當前位置呈現在Google地圖上。

當我第一次使用get_position時,我將呈現如下形式:

var geo_panel = new Ext.form.Panel({
            useCurrentLocation: true,
            fullscreen: true,
            layout: 'fit',
            items: obj
        });

其中obj是定義為的工具欄

toolbar = Ext.create('Ext.Toolbar', {
                docked: 'top',
                alias : 'widget.geolocationToolbar',
                ui: 'light',
                defaults: {
                    iconMask: true
                },
                items: [
                    {
                        xtype: 'button',
                        ui: 'back',
                        text: 'Back',
                        // destroy form.Panel overlay and return to tree store view
                        handler: function() {
                            geo_panel.destroy();
                        }
                    },
                    {
                        xtype: 'button',
                        itemId: 'stopWatch',
                        text: 'StopWatch',
                        iconCls: 'arrow_right',
                        iconMask: true,
                        handler: function() {
                            EvaluateIt.utils.UtilityService.clear_watch();
                        }
                    },
                    {
                        xtype: 'selectfield',
                        itemId: 'accuracy',
                        autoSelect: false,
                        placeHolder: 'accuracy',
                        options: [
                            {text: ''},
                            {text: 'high',  value: 5},
                            {text: 'med high',  value: 10},
                            {text: 'medium',  value: 15},
                            {text: 'med low',  value: 20},
                            {text: 'low',  value: 66}
                        ],
                        listeners: {
                            change: function(field, value) {
                                if (value instanceof Ext.data.Model) {
                                    value = value.get(field.getValueField());
                                }
                                console.log(value);
                                // set accuracy as config variable
                                EvaluateIt.config.accuracy = value;
                            }
                        }
                    },
                    {
                        iconCls: 'home',
                        handler: function() {
                            google_map.getMap().panTo(position);
                        }
                    }
                ]
            });

這在我的表單面板中呈現得很好。

然后,我的onSuccess方法傳遞一個參數,以將google_map添加到geo_panel表單面板中。 我已經嘗試了geo_panel.add(toolbar,google_map),它可以工作,但是當我點擊上方工具欄中的“返回”按鈕時,我遇到了一個問題:

{
    xtype: 'button',
    ui: 'back',
    text: 'Back',
    // destroy form.Panel overlay and return to tree store view
    handler: function() {
        geo_panel.destroy();
    }
},

我必須單擊兩次:第一次銷毀google_map,然后第二次銷毀工具欄。 這是非常不希望的行為。 我嘗試銷毀geo_panel中的每個項目,但是這樣做還有其他怪異的事情。 這就像有多個geo_panel實例一樣。 有任何想法嗎?

我知道了:我正在創建我的geo_panel的兩個實例。 我重構了代碼,現在一切都按需工作了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM