1

私は Sencha Touch2 を初めて使用し、listitem タップでコントローラーからフローティング パネルにデータを渡す際に問題に直面しています。ここに私のコントローラーの実装コードがあります:

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

    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');
        Ext.Viewport.add({
            xtype: 'DatePanel'
        });
     }

});

コントローラーでデータを取得でき、DatePanel.js は私のフローティング パネルです。DatePanel.js:

Ext.define('CustomList.view.DatePanel', {
    extend: 'Ext.Panel',
    alias: 'widget.DatePanel',
    xtype:'datepanel',
    config: {
        itemid:'DatePanel',
        modal:true,
        centered: true,
        hideOnMaskTap:true,
        width:'500px',
        height:'650px',
        items:[
            {
                styleHtmlCls:'homepage',
                tpl:'<h4>{name3}</h4>'

            },
            {
                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('datepanel');
                            panelToDestroy.destroy();
                            Ext.Viewport.add(Ext.create('CustomList.view.Test2'));//Test.js is my list Panel

                            }
                        }
                    }]

            }
        ]
    }
});

「キャンセル」ボタンでパネルを破壊するのを手伝ってください。誰でも私を助けてください。ありがとう。

4

1 に答える 1

2

最初に追加するパネルのインスタンスを作成します。

var floatingDatePanel = Ext.create('Yourapp.view.YourDatePanel');

次に、itemTapで選択したリストアイテムのデータを取得します

var data = record.getData();

floatingDatePanelこのデータをwithsetData()メソッドに割り当てます

更新

パネルコードを見た後、データをパネルの最初の項目に設定したいと思います。

        {
            styleHtmlCls:'homepage',
            tpl:'<h4>{name3}</h4>'

        }

右 ?その場合は、次のコードを変更する必要があります

floatingDatePanel.setData(data);

floatingDatePanel.getAt(0).setData(data);

なぜなら、テンプレートが割り当てられているのはパネル内の最初のアイテムであり、データを設定する場所と同じであることが望ましいからです。

最後に、このパネルをビューポートに追加できます。

Ext.Viewport.add(floatingDatePanel);
于 2013-03-15T09:33:11.827 に答える