0

在此示例中,我对更改卡片的语法有点不清楚。我已经尝试对面板进行引用,但这没有用。我想使用底部由提交按钮触发的 onButton 函数来切换卡片(只是一个按钮 - 在本示例中并未真正用作表单)

Ext.application({
    name: 'Sencha',
    main: null,
    refs: [
    {
        ref: "main",
        selector: "mypanel"
    }
    ],
    init: function() {
        this.control({
            '#switch': {
                tap: this.onButton
            },
        })
    },
    launch: function() {
        this.main = Ext.create("Ext.Panel", {
            fullscreen: true,
            layout: 'card',
            xtype: 'mypanel',
            items: [
                {
                title: 'Home',
                iconCls: 'home',
                cls: 'home',
                html: 'home page',
            },
            {
                title: 'Contact',
                iconCls: 'user',
                xtype: 'formpanel',
                url: 'contact.php',
                layout: 'vbox',
                items: [
                   {
                    xtype: 'fieldset',
                    title: 'Contact Us',
                    instructions: '(email address is optional)',
                    items: [
                        {
                            xtype: 'textfield',
                            label: 'Name'
                        },
                        {
                            xtype: 'emailfield',
                            label: 'Email'
                        },
                        {
                            xtype: 'textareafield',
                            label: 'Message'
                        }
                    ]
                },
                {
                    xtype: 'button',
                    itemId: 'switch',
                    id: 'switch',
                    text: 'Send',
                    ui: 'confirm',
                }
                ]
            }
            ]
        });

        this.main.setActiveItem(1);
    },
    onButton: function() {
            //? how do I switch from here
    }
});

提前致谢

4

3 回答 3

0

你试过了吗Ext.getCmp('componentId').setActiveItem(1);

您当然需要为id您的主面板分配一个。

于 2013-05-16T12:42:58.607 回答
0

原来在 ST 开发预览 2 中有一个错误。范围未正确传递给 onButton 函数。预期的切换方式是 this.main.setActiveItem() 由于这个问题,它对我不起作用。现在可以在控制方法中传递范围:

Ext.application({
    name: 'Sencha',
    main: null,
    refs: [
    {
        ref: "main",
        selector: "mypanel"
    }
    ],
    init: function() {
        this.control({
            '#switch': {
                tap: this.onButton
            },
        }, null, this)  //this is what is needed
    },
    launch: function() {
        this.main = Ext.create("Ext.Panel", {
            fullscreen: true,
            layout: 'card',
            xtype: 'mypanel',
            items: [
                {
                title: 'Home',
                iconCls: 'home',
                cls: 'home',
                html: 'home page',
            },
            {
                title: 'Contact',
                iconCls: 'user',
                xtype: 'formpanel',
                url: 'contact.php',
                layout: 'vbox',
                items: [
                   {
                    xtype: 'fieldset',
                    title: 'Contact Us',
                    instructions: '(email address is optional)',
                    items: [
                        {
                            xtype: 'textfield',
                            label: 'Name'
                        },
                        {
                            xtype: 'emailfield',
                            label: 'Email'
                        },
                        {
                            xtype: 'textareafield',
                            label: 'Message'
                        }
                    ]
                },
                {
                    xtype: 'button',
                    itemId: 'switch',
                    id: 'switch',
                    text: 'Send',
                    ui: 'confirm',
                }
                ]
            }
            ]
        });

        this.main.setActiveItem(1);
    },
    onButton: function() {
        this.main.setActiveItem(0);
    }
});
于 2011-11-19T09:20:23.850 回答
0

您是否尝试this.main.setActiveItem(1);过 onButton() 方法?

如果你想通过这个“开关”按钮来切换卡片,你可以this.activeItemNo = 0;在“启动”方法中设置一个变量 say 并在 onButton 方法中使用 if-else 条件。希望有帮助。

于 2011-11-16T17:20:45.260 回答