两个菜单来自同一侧

时间:2015-09-17 19:00:38

标签: javascript extjs sencha-touch-2

我正在寻找一个我想做的事情的例子,或者暗示如何去做。 我想从Sencha Touch 2的Viewport的一侧创建菜单,然后在此之后 用其他菜单替换此菜单。当我打电话

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)        
        {

            Microsoft.Win32.SystemEvents.DisplaySettingsChanged += SystemEvents_DisplaySettingsChanged;

            Microsoft.Win32.SystemEvents.DisplaySettingsChanging += SystemEvents_DisplaySettingsChanging;

            Console.Read();
        }

        static void SystemEvents_DisplaySettingsChanged(object sender, EventArgs e)
        {
            Console.WriteLine("Display settings have been changed.");
        }

        static void SystemEvents_DisplaySettingsChanging(object sender, EventArgs e)
        {
            Console.WriteLine("Display settings are changing now...");
        }

    }
}

它工作正常但是在我用其他菜单调用setMenu之后,新的附加菜单取代了旧菜单,这就是主意。但是当我想要返回其他菜单时出现问题。有没有办法在某个地方保留旧菜单的实例?我只是不想再次重新创建上一个菜单。我试图用Container替换第二个菜单,但它不像菜单那么灵活。

2 个答案:

答案 0 :(得分:1)

我无法重现你的问题。我写了一个小提琴并创建了3个菜单。我没有任何问题地显示和隐藏它们。我甚至可以使用Ext.Viewport.down()选择一个菜单。

Sencha Fiddle的代码:

var menu1 = Ext.create('Ext.Menu', {
    itemId: 'menu1',
    items: [{
        text: 'MenuItem 1',
        iconCls: 'settings'
    }]
});

var menu2 = Ext.create('Ext.Menu', {
    itemId: 'menu2',
    items: [{
        text: 'MenuItem 2',
        iconCls: 'compose'
    }]
});

var menu3 = Ext.create('Ext.Menu', {
    itemId: 'menu3',
    items: [{
        text: 'MenuItem 3',
        iconCls: 'star'
    }]
});



Ext.application({
    name: 'Fiddle',

    launch: function() {
        var me = this,
            menuus = new Array(menu1, menu2, menu3);

        me.showMenu(menu1);

        Ext.defer(function() {
            me.showMenu(menu2);
        }, 1000);

        Ext.defer(function() {
            me.showMenu(menu3);
        }, 2000);

        Ext.defer(function() {
            me.showMenu(menu1);
        }, 3000);

        Ext.defer(function() {
            var menuFromViewport = Ext.Viewport.down('#menu2');
            me.showMenu(menuFromViewport);
        }, 4000);
    },

    showMenu: function(menu) {        
        Ext.Viewport.hideMenu('left');

        Ext.Viewport.setMenu(menu, {
            side: 'left'
        });

        Ext.Viewport.showMenu('left');
    }
});

答案 1 :(得分:0)

我来解决方法如何做到这一点。这是我的解决方案的例子:

isComplete(RepeatContext context, RepeatStatus result)