加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – md-menus在使用ng-repeat时没有关闭

发布时间:2020-12-17 17:25:29 所属栏目:安全 来源:网络整理
导读:md-menu-bar md-menu ng-repeat="section in sections" md-button class="navButton" ng-click="$mdOpenMenu()" {{section.name}} /md-button md-menu-content md-menu-item md-buttonSubsection 1/md-button /md-menu-item /md-menu-content /md-menu/md-me
<md-menu-bar>
  <md-menu ng-repeat="section in sections">
    <md-button class="navButton" ng-click="$mdOpenMenu()">
      {{section.name}}
    </md-button>
    <md-menu-content>
      <md-menu-item>
        <md-button>Subsection 1</md-button>
      </md-menu-item>
    </md-menu-content>
  </md-menu>
</md-menu-bar>

我正在做类似上面的事情但不幸的是,如果我点击一个菜单,即使我点击其他按钮它也会保持打开状态.

我只是希望它具有相同的行为

https://material.angularjs.org/latest/demo/menuBar

附:如果我不使用ng-repeat(意思是菜单是静态的),它可以正常工作.

Problem Codepen

解决方法

我刚刚碰到这个问题并注意到S.Klechkovski发布的链接有一个由christrude制作的解决方法.这并不完美(正如其他用户指出的那样),但至少它是有效的.不妨在这里发布.

您必须在控制器中包含$mdMenu服务,并在单击以打开菜单时调用其隐藏方法.

$scope.cloSEOthers = function() {
  $mdMenu.hide(null,{ closeAll: true });
}

并在HTML中

<button ng-click="cloSEOthers();$mdOpenMenu()">File</button>

这是一个编辑过的Codepen.我希望它有所帮助.

编辑

最好的解决方案是修补组件本身.即使在Github中找到解决方法的缺点(我在这里复制),它仍然是最好的.

然而,这是一个仅用于探索目的的替代方案;)This little frankenstein使用promises仅在完成所有动画时打开下一个菜单.

标记

<button ng-click="cloSEOthers().then($mdOpenMenu);">File</button>

调节器

var lock = false;

$scope.cloSEOthers = function() {
  if(lock) {
    return;
  }

  var defer = $q.defer()
  lock = true;

  $mdMenu.hide(null,{ closeAll: true }).then(function() {
    lock = false;
    defer.resolve();
  });

  return defer.promise;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读