如何给出共同功能的菜单

时间:2017-07-10 09:46:52

标签: javascript optimization extjs

我有两个splitbuttons有不同的ID。分割按钮有一些菜单。在我的情况下,两个分割按钮具有相同的菜单。我的问题是如何优化代码并在一些常用函数中编写菜单。

这是我的代码示例。

{
    xtype: 'splitbutton',
    text: "Button1",
    hidden: true,
    id : 'Button1',
    menu:[{
            text: "A1",
        },{
            text: "A1",
        },{
            text: "A1",
        },{
            text: "A1",
        }],
    handler:function(){
        this.SomeFunction();
    }
},{
    xtype: 'splitbutton',
    text: "Button2",
    hidden: true,
    id : 'Button2',
    menu:[{
            text: "A1",
        },{
            text: "A1",
        },{
            text: "A1",
        },{
            text: "A1",
        }],
    handler:function(){
        this.SomeFunction();
    }
}

您可以在此处看到Button1Button2具有相同的菜单。如何在一些常见的地方优化我的代码并制作菜单。

2 个答案:

答案 0 :(得分:2)

在类中定义一个buildMenuItems方法,返回菜单项:

buildMenuItems: function() {
    return [{
        text: "A1",
    },{
        text: "A1",
    },{
        text: "A1",
    },{
        text: "A1",
    }];
}

然后通过调用此函数替换常用菜单项定义。

{
    xtype: 'splitbutton',
    text: "Button1",
    hidden: true,
    id: 'Button1',
    menu: this.buildMenuItems(),
    handler: function () {
        this.SomeFunction();
    }
}, {
    xtype: 'splitbutton',
    text: "Button2",
    hidden: true,
    id: 'Button2',
    menu: this.buildMenuItems(),
    handler: function () {
        this.SomeFunction();
    }
}

答案 1 :(得分:0)

只需为每个具有xtype,text,hidden,id,menu,handler属性的分割按钮创建一个类。

现在添加菜单管理,添加,删除,更新的方法。所以你可以这样做:

var btnObj = new ButtonSplit(xtype, 'text', isHidden);
btnObj.addMenu("A1");

创建一个类很有用,所以将来你可以修改你的类并添加方法,比如btnClass.addManyMenus([" A1"," A2",& #34; A3"]);