0

私は Sencha Touch2 を初めて使いました。フローティング パネルを破壊する際に問題が発生しました。リスト項目をクリックすると、ListView の上に詳細を含むフローティング パネルが表示されます。「キャンセル」ボタンがクリックされたときにフローティングパネルを破棄したいのですが、誰か助けてください。ありがとう。

FloatingPanel.js:
Ext.define('CustomList.view.FloatingPanel', {
    extend: 'Ext.Panel',
    alias: 'widget.FloatingPanel',
    xtype:'datepanel',
    config: {
        id:'floatingPanel',
        modal:true,
        centered: true,
        hideOnMaskTap:true,
        width:'500px',
        height:'650px',
        items:[
            {
                styleHtmlCls:'homepage',
                tpl:'<h4>{name1}</h4><h3>{name2}</h3><h3>{name3}</h3><h3>{name4}'

            },
            {
                xtype:'toolbar',
                docked:'bottom',
                items:[{
                    text:'OK',
                    ui:'confirm',
                    action:'ShowTurnOverReport',
                    listeners : {
                        tap : function() {
                            console.log('Ok');
                        }
                    }
                },
                    {
                        text:'Cancel',
                        ui:'confirm',
                        action:'Cancel',
                        listeners : {
                            tap : function() {
                                console.log('Cancel');
                                var panelToDestroy = Ext.getCmp('floatingPanel');
                                panelToDestroy.destroy();

                            }
                        }
                    }]

            }
        ]
    }
});

これが私のリストです。

ShowList.js:
Ext.define('CustomList.view.ShowList',{
    extend:'Ext.List',
    xtype:'showlist',
    requires: [
        'Ext.dataview.List',
        'Ext.data.Store',
        'CustomList.controller.Main'
    ],
    config:{

        items:[
            {
                xtype:'list',
                id: 'listitems',
                onItemDisclosure: true,
                store:'StoreList',
                scrollable:'true',
                itemTpl: [
                    '{firstname}'
                ],
                itemTpl: '<font color="#990000"><h2>{lastname}</h2></font>{firstname}'


            }

        ]



    }


});

これが私のコントローラーです

Main.js
Ext.define('CustomList.controller.Main', {
    extend: 'Ext.app.Controller',
    requires:['CustomList.view.FloatingPanel'],

    config: {
        refs: {
            listView: 'listitems'
        },

        control: {
            'main test2 list': {
                activate: 'onActivate',
                itemtap: 'onItemTap'
            }
        }
    },

    onActivate: function() {
        console.log('Main container is active');
    },

    onItemTap: function(view, index, target, record, event) {
        console.log('Item was tapped on the Data View');
        var name1 = record.get('name1');
        console.log('Item was tapped on the Data View'+name1);
        var floatingDatePanel = Ext.create('CustomList.view.FloatingPanel');
        var data = record.getData();
        floatingDatePanel.getAt(0).setData(data);
        Ext.Viewport.add(floatingDatePanel);

    }

});
4

1 に答える 1

0

明らかな問題の1つは、次のとおりです。

Ext.getCmp('floatingPanel');

あなたが使用している間、ケースに適用されid: 'floatingPanel'ますitemid:'floatingPanel'

を取得するには、 Ext.ComponentQueryitemIdを使用できます。

Ext.ComponentQuery.query('#floatingPanel')[0];
于 2013-03-18T06:56:51.537 に答える