如何为Angular Material" md-menu"?设置预定的偏移量?

时间:2016-05-16 22:54:53

标签: javascript angularjs angular-material

我正在使用Angular Material" md-menu"正如这些演示中所述:https://material.angularjs.org/latest/demo/menu

我想要做的是将菜单的底部选项始终保持在您单击的按钮上方,以显示菜单,无论我设置了多少条目。我测量了每个额外条目在菜单底部添加了50px的差异。

有没有办法根据菜单中的条目数确定偏移量并将其设置为偏移量?

所以,让我们说1个条目是" 0,-50",2个条目是" 0,-100"等等。

此值只需要通过某种方法确定,并且在加载页面后不会动态更改。

1 个答案:

答案 0 :(得分:2)

这可能不是您正在寻找的答案,但根据您需要此功能的时间,您可以等待mdPanel功能。它在过去的几天里被合并为主人,所以它不应该那么久。

mdPanel的好处在于您可以根据需要轻松定位。您可以在此处查看基础知识:expressjs

我还没有检查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元素或任何你想要的东西上调用这个函数。