1

我是 Sencha Touch2 的新手,在将数据从控制器传递到列表项点击的浮动面板时遇到问题。这是我的控制器实现代码:

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 是我的浮动面板。日期面板.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();

将此数据分配给floatingDatePanelwithsetData()方法

更新

查看您的面板代码后,我想您想将数据设置为面板中的第一项,即

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

        }

对 ?如果是这样,那么您需要更改以下代码

floatingDatePanel.setData(data);

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

因为,它是面板内的第一个项目,它分配了一个模板,并且希望与您要设置数据的位置相同。

最后,您可以将此面板添加到视口中

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