javascript - extjs3下拉菜单调整位置

标签 javascript html extjs drop-down-menu extjs3

            var tpl = new Ext.XTemplate(
                '<tpl for=".">',
                '<div class="thumb-wrap">',
                '<img src="../images/warning.png" style="vertical-align: middle;" title="Warning">',
                '<span class="x-editable" style="margin-left: 3px;">{text}</span></div>',
                '</tpl>',
                '<div class="x-clear"></div>'
            );

            var msg = store.proxy.lastDataTableObject.logMessages;                
            var topToolbar = this.gridPanel.topToolbar;

            if (msg && msg.length > 0) {                    
                //Warning Messages menu
                topToolbar.insert(topToolbar.items.items.length - 1,{
                    text: "Warning Messages",
                    menu: {
                        xtype: 'menu',
                        autoScroll: true,
                        maxHeight: 200,
                        items: [
                            new Ext.DataView({
                                store: new Ext.data.SimpleStore({data: msg, fields: ['text']}),
                                tpl: tpl,
                                autoWidth: true,
                                multiSelect: true,
                                overClass: 'x-view-over',
                                itemSelector: 'div.thumb-wrap',
                                emptyText: 'No warnings to display'
                            })
                        ]
                    }
                });
                topToolbar.doLayout();

我制作了这个菜单,里面有一个 DataView。我的最终目标是添加 maxHeight 并使下拉元素的右上角始终锚定到按钮元素的右下角。

以下是目前发生的情况:
maxHeight:200
在固定高度的情况下,锚定问题仍然存在,但至少菜单会按应有的方式下降:
enter image description here

最佳答案

您可以使用menuAlign工具栏按钮上的config,值为tr-br这会将您的元素(在您的情况下为菜单)右上角与目标(在您的情况下为按钮)右下角对齐。

if (msg && msg.length > 0) {
    topToolbar.insert(topToolbar.items.items.length - 1,{
        text: "Warning Messages",
        menuAlign: 'tr-br',  // Add this line here
        menu: {
            xtype: 'menu',
            ...
        }
    });
    topToolbar.doLayout();
}

这是一个working example on Sencha's fiddle site根据您的代码供您引用。

Menu right aligned with button

关于javascript - extjs3下拉菜单调整位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25268530/

相关文章:

javascript - 如何为两人一组选择元素

javascript - 如果没有值则设置 select 的默认值

javascript - php ajax如何发送消息的字符数

javascript - 如何从 ExtJS 网格中的行选择中获取列名?

javascript - 在指令中单击按钮隐藏/显示 div

javascript - 使用新数组的推送方法

javascript - 用js加载本地.csv,用d3.js处理

javascript - 如何替换 html-tag 属性字符串中的多个 '<' 和 '>'?

extjs - 为应用程序中的所有按钮绑定(bind)点击事件

javascript - 如何使用 ExtJS 4 读取嵌套的 json 文件