如何在extjs菜单中动态设置项目?

时间:2013-04-17 10:49:43

标签: extjs extjs4 extjs4.1 extjs-mvc

点击显示菜单的按钮。 一旦我们选择菜单需要在其他菜单中动态更改项目。我没有为此视图的任何组件定义ID,因为如果我将id提供给组件,它将会给出错误重复ID找到。 此视图在所有视图中都很常见,如全局功能。在下面的代码中,两个项目:regionType和items:来自常量文件的americaSubregionType。我第一次需要将这些数据显示为区域和子区域中的菜单的默认项目。一旦我从Region选择项目,我需要在SubRegion菜单中动态更改项目。 所以我已经这样点击区域菜单我已经为子区域项目分配了值:您可以在下面的代码中看到的USASubregionType。但它没有反映出来。旧数据本身显示来自常量文件的子区域菜单项。任何人都可以告诉如何动态更改项目吗?如何在extjs中实现这一点?非常感谢。谢谢。

这是我的代码

{
    xtype: 'button',
    action: 'btnFilter',
    cls: 'filterCls',
    plain: true,
    menu: {
        items: [{
            text: 'Region',
            cls: 'filterMenuCls',
            menu: {
                plain: true,
                cls: 'filterMenuCls',
                listeners: {
                    click: function (menuitem, e, opt) {
                        var grid = Ext.getCmp('GridViewId');
                        grid.store.clearFilter();
                        grid.store.filter([{
                            property: "region",
                            value: e.text,
                            anyMatch: false,
                            exactMatch: true
                        }])
                        //This one i will retrieve from grid store and assign to americaSubregionType here will changesubregion value but it is not reflecting in visible view
                        americaSubregionType = [

                            '<b class="menuTitleCls">Choose a Vessel Type</b>', {
                            text: 'ABC',
                            cls: 'filterMenuCls'
                        }, {
                            text: 'Hello',
                            cls: 'filterMenuCls'
                        }]
                    }
                },
                items: regionType
            }
        }, {
            text: 'SubRegion',
            cls: 'filterMenuCls',
            menu: {
                plain: true,
                cls: 'filterMenuCls',
                action: 'Subbb',
                listeners: {
                    click: function (menuitem, e, opt) {

                    }
                },
                items: americaSubregionType
            }
        }

        }
    }

}

常量文件数据

regionType = [

    '<b class="menuTitleCls">Choose a Vessel Type</b>',
    {
        text: 'AMERICAS',
        cls: 'filterMenuCls'
    },
    {
        text: 'NORTH SEA',
        cls: 'filterMenuCls'
    },
    {
        text: 'SEA',
        cls: 'filterMenuCls'
    }
]

americaSubregionType = [

    '<b class="menuTitleCls">Choose a Vessel Type</b>',
    {
        text: 'Brazil',
        cls: 'filterMenuCls'
    },
    {
        text: 'Mexico',
        cls: 'filterMenuCls'
    },
    {
        text: 'US',
        cls: 'filterMenuCls'
    }
]

1 个答案:

答案 0 :(得分:1)

您可以设置菜单的itemId,您需要选择它。

由于每个菜单都是容器(面板),因此add()insert()添加项目应该不会有任何问题。