如何为 Angular Material 的 "md-menu" 设置预定偏移量?
How can I set a predetermined offset for Angular Material's "md-menu"?
我正在使用 Angular Material 的 "md-menu",如这些演示中所述:https://material.angularjs.org/latest/demo/menu
我想做的是无论我设置了多少条目,都将菜单的底部选项始终保持在您单击以显示菜单的按钮上方。我测量了每个额外条目的菜单底部可能有 50 像素的差异。
有没有办法根据菜单中的条目数确定偏移量并将其设置为偏移量?
假设 1 个条目是“0, -50”,2 个条目是“0, -100”,等等
这个值只是需要通过某种方法来确定,不会在页面加载后动态改变。
这可能不是您正在寻找的答案,但根据您需要该功能的时间,您可以等待 mdPanel
功能。这几天已经合并到master了,所以应该不会那么长吧
mdPanel
的优点在于您可以轻松地随意放置它。您可以在此处查看基础知识:https://github.com/angular/material/blob/master/src/components/panel/panel.js#L465-L497
我还没有检查 mdMenu
是否已经基于 mdPanel
进行了重新设置(可能还没有 ),但是你可以创建你的菜单mdPanel 无论如何。这是一个基本示例:
vm.menu = function () {
var position = $mdPanel.newPanelPosition()
.relativeTo(document.querySelector('#menu'))
.addPanelPosition($mdPanel.xPosition.ALIGN_START, $mdPanel.yPosition.ALIGN_BOTTOMS);
var config = {
templateUrl: 'widgets/menu.html',
hasBackdrop: false,
position: position,
clickOutsideToClose: true,
escapeToClose: true,
focusOnOpen: true,
controller: MenuController,
controllerAs: 'vm'
};
$mdPanel.open(config);
}
您可以在简单的 mdButton
元素或您真正想要的任何元素上调用此函数。
我正在使用 Angular Material 的 "md-menu",如这些演示中所述:https://material.angularjs.org/latest/demo/menu
我想做的是无论我设置了多少条目,都将菜单的底部选项始终保持在您单击以显示菜单的按钮上方。我测量了每个额外条目的菜单底部可能有 50 像素的差异。
有没有办法根据菜单中的条目数确定偏移量并将其设置为偏移量?
假设 1 个条目是“0, -50”,2 个条目是“0, -100”,等等
这个值只是需要通过某种方法来确定,不会在页面加载后动态改变。
这可能不是您正在寻找的答案,但根据您需要该功能的时间,您可以等待 mdPanel
功能。这几天已经合并到master了,所以应该不会那么长吧
mdPanel
的优点在于您可以轻松地随意放置它。您可以在此处查看基础知识:https://github.com/angular/material/blob/master/src/components/panel/panel.js#L465-L497
我还没有检查 mdMenu
是否已经基于 mdPanel
进行了重新设置(可能还没有 ),但是你可以创建你的菜单mdPanel 无论如何。这是一个基本示例:
vm.menu = function () {
var position = $mdPanel.newPanelPosition()
.relativeTo(document.querySelector('#menu'))
.addPanelPosition($mdPanel.xPosition.ALIGN_START, $mdPanel.yPosition.ALIGN_BOTTOMS);
var config = {
templateUrl: 'widgets/menu.html',
hasBackdrop: false,
position: position,
clickOutsideToClose: true,
escapeToClose: true,
focusOnOpen: true,
controller: MenuController,
controllerAs: 'vm'
};
$mdPanel.open(config);
}
您可以在简单的 mdButton
元素或您真正想要的任何元素上调用此函数。