另一个按钮内的按钮在 Firefox 中不起作用 (Angular Material)

Button inside another button doesn't work in Firefox (Angular Material)

Му 按钮 (class="patternButton") 包含另一个应显示菜单的小按钮 (class="patternMenuBtn")。这是标记:

    <div class="patternsBlock">
        <md-button class="patternButton"
                   ng-class="{selected: view.id == selectedViewId, globalView: view.id.indexOf(userViewIdPrefix) == -1}"
                   ng-repeat="view in loadedViews" ng-click="selectPattern(view)">
            {{view.name}}
            <md-menu md-offset="26 40" ng-show="view.id.indexOf(userViewIdPrefix) != -1">
                <md-button class="md-fab md-mini patternMenuBtn" ng-click="openMenu($mdOpenMenu, $event)">

                </md-button>
                <md-menu-content width="2">
                    <md-menu-item>
                        <md-button ng-click="deleteUserView(view, $index)">
                            <span md-menu-align-target>Delete</span>
                        </md-button>
                    </md-menu-item>
                    <md-menu-item>
                        <md-button ng-click="openViewPanel(view, $index)">
                            <span md-menu-align-target>Edit</span>
                        </md-button>
                    </md-menu-item>
                </md-menu-content>
            </md-menu>
        </md-button>
    </div>

这是openMenu处理程序:

    $scope.openMenu = function ($mdOpenMenu, ev) {
        ev.stopPropagation();
        $mdOpenMenu(ev);
    };

这适用于 Chrome,但不适用于 Firefox。实际上,openMenu 函数没有被调用。

似乎唯一的解决办法是将按钮一个接一个地放置,而不是一个接一个地放置。我的新标记如下所示:

    <div class="patternsBlock">
        <div class="patternButtonContainer" ng-repeat="view in loadedViews"
             ng-class="{selected: view.id == selectedViewId, globalView: view.id.indexOf(userViewIdPrefix) == -1}">
            <md-button class="patternButton" ng-click="selectPattern(view)">
                {{view.name}}
            </md-button>
            <md-menu md-offset="26 40" ng-show="view.id.indexOf(userViewIdPrefix) != -1">
                <md-button class="md-fab md-mini patternMenuBtn" ng-click="openMenu($mdOpenMenu, $event)"></md-button>
                <md-menu-content width="2">
                    <md-menu-item>
                        <md-button ng-click="deleteUserView(view, $index)">
                            <span md-menu-align-target>Delete</span>
                        </md-button>
                    </md-menu-item>
                    <md-menu-item>
                        <md-button ng-click="openViewPanel(view, $index)">
                            <span md-menu-align-target>Edit</span>
                        </md-button>
                    </md-menu-item>
                </md-menu-content>
            </md-menu>
        </div>
    </div>

然后我使用 CSS 使菜单按钮出现在主按钮上。

重要的是将 patternButtonContainerposition:absolute 上的 position:relative 设置为 <md-menu>。这种方式允许在不影响容器大小的情况下将菜单按钮放在任何你想要的地方。

我有同样的问题:

<md-button ng-disabled="true">
  <md-button>
  </md-button>
</md-button>

但我可以用这个解决:

<div class="md-button" ng-disabled="true">
  <md-button>
  </md-button>
</div>

只使用 md-button 的 css class 并且可以正常工作。