ExtJs Splitbutton菜单 - 在新选项卡中打开

时间:2013-10-17 09:37:36

标签: javascript extjs extjs4 split-button

我有一个ExtJs(ExtJs 4.2)分割按钮,可以下载给我几个我选择的选项。每个选项都根据我的业务逻辑重定向。

我的问题是:当我右键单击其中一个选项并在新选项卡中单击“打开”时,将在新选项卡中打开同一页面,并在同一URL的末尾附加“#”。 如何让它正常工作?感谢。

我的ExtJs代码 -

Ext.onReady(function () {
var but = new Ext.FormPanel({
    items: [{
        xtype: 'splitbutton',
        text: 'Choose an action',

        width: 250,
        scale: 'medium',
        rowspan: 2,

        renderTo: Ext.getBody(),
        margin: '5 15 15 510',
        border: true,
        handler: function () {
            Ext.Msg.alert('<center><br/>Select an option from drop down menu!<center>');
        },
        menu: [{
            text: 'Create Student Record',
            anchor: '100%',
            handler: function () {


                but.getForm().doAction('standardsubmit', {
                    target: '<_s></_s>elf',
                    method: 'POST',
                    standardSubmit: true,
                    formBind: true,
                    url: 'createrecord.jsp'
                })
            }
        }, {
            text: 'Create Class Details',
            anchor: '100%',
            handler: function () {


                but.getForm().doAction('standardsubmit', {
                    target: '_self',
                    method: 'POST',
                    standardSubmit: true,
                    formBind: true,
                    url: 'classrecord.jsp'
                })
            }
        }]
    });

    Ext.create('Ext.Button', {
        text: 'Logout',
        margin: '-85 10 10 1200',
        scale: 'medium',
        renderTo: Ext.getBody(),
        handler: function () {
            but.getForm().doAction('standardsubmit', {
                target: '_self',
                method: 'POST',
                standardSubmit: true,
                url: 'LogoutServlet'
            })
        }


    });

});

1 个答案:

答案 0 :(得分:1)

据我所知,你实际上不能。

菜单中显示在新选项卡中打开的原因是菜单项呈现为链接(<a>),浏览器负责该行为。但是你没有普通的链接,而是附加了JS处理程序的链接。当您单击一个默认行为时,您将使用表单执行一些POST请求。当你点击'在新标签页中打开'时JS将无法正常工作,你真的无法做任何事情。

您可以做的是通过在菜单项而不是POST中提供href来使用GET请求并删除表单。然后它会工作。