【问题标题】:md-sidenav Angular material prevent click outside to closemd-sidenav Angular 材质防止点击外部关闭
【发布时间】:2016-03-11 09:18:24
【问题描述】:

如果我点击它外部(如果我点击 md-backdrop),我需要防止 sidenav 关闭。例如,对于 md-dialog,有一个名为:clickOutsideToClose 的指令,其中 false 表示如果单击外部,它不会关闭对话框。我需要这样的东西。有可能吗?这是导航的示例:http://codepen.io/ThomasBurleson/pen/LEZvWw

<div ng-app="sidenavDemo1" ng-controller="AppCtrl" layout="column" layout-fill>
  <section layout="row" flex>
    <md-sidenav class="md-sidenav-left md-whiteframe-z2" md-component-id="left" md-is-locked-open="$mdMedia('gt-md')">
      <md-toolbar class="md-theme-indigo" layout="row">
        <h1 class="md-toolbar-tools">Sidenav Left</h1>
        <span flex>
        <md-menu>
      <md-button aria-label="Open phone interactions menu" class="md-icon-button" ng-click="ctrl.openMenu($mdOpenMenu, $event)">
        <md-icon md-menu-origin class="material-icons">phone</md-icon>
      </md-button>
      <md-menu-content width="4">
        <md-menu-item>
          <md-button ng-click="ctrl.redial($event)">
            <md-icon md-svg-icon="call:dialpad" md-menu-align-target></md-icon>
            Redial
          </md-button>
        </md-menu-item>
        <md-menu-item>
          <md-button disabled="disabled" ng-click="ctrl.checkVoicemail()">
            <md-icon md-svg-icon="call:voicemail"></md-icon>
            Check voicemail
          </md-button>
        </md-menu-item>
        <md-menu-divider></md-menu-divider>
        <md-menu-item>
          <md-button ng-click="ctrl.toggleNotifications()">
            <md-icon md-svg-icon="social:notifications-{{ctrl.notificationsEnabled ? 'off' : 'on'}}"></md-icon>
            {{ctrl.notificationsEnabled ? 'Disable' : 'Enable' }} notifications
          </md-button>
        </md-menu-item>
      </md-menu-content>
    </md-menu> 
      </md-toolbar>
      <md-content class="md-padding" ng-controller="LeftCtrl">
        <md-button ng-click="close()" class="md-primary" hide-gt-md>
          Close Sidenav Left
        </md-button>
        <p hide-md show-gt-md>
          This sidenav is locked open on your device. To go back to the default behavior,
          narrow your display.
        </p>
        <p> 
        The "right" sideNav is open = {{isOpen()}} </p>
      </md-content>
    </md-sidenav>
    <md-content flex class="md-padding">
      <div layout="column" layout-fill layout-align="center center">
        <p>
        The left sidenav will 'lock open' on a medium (>=960px wide) device.
        </p>
        <div>
          <md-button ng-click="toggleLeft()" class="md-primary" hide-gt-md>
            Toggle left
          </md-button>
        </div>
        <div>
          <md-button ng-click="toggle()" class="md-primary" >
            Toggle right
          </md-button>
        </div>
      </div>
    </md-content>
    <md-sidenav class="md-sidenav-right md-whiteframe-z2" md-component-id="right">
      <md-toolbar class="md-theme-light">
        <h1 class="md-toolbar-tools">Sidenav Right</h1>
      </md-toolbar>
      <md-content ng-controller="RightCtrl" class="md-padding">
        <md-button ng-click="close()" class="md-primary">
          Close Sidenav Right
        </md-button>
      </md-content>
    </md-sidenav>
  </section>
</div>

【问题讨论】:

  • 你能对我的回答发表任何评论吗?

标签: javascript html angularjs angular-material


【解决方案1】:

您只需要使用md-is-locked-open。当您单击相应的按钮时,将其设为 truefalse

检查以下链接。 http://codepen.io/next1/pen/aNZYJb

【讨论】:

  • 这是您要找的吗?
  • 抱歉,没有看到答案。无论如何,这就是我想要的,但它应该像响应模式下的左侧导航一样关闭/打开
  • 因为代码使用md-is-locked-open 将禁用背景并占用您可以在左侧导航中看到的actula 空间。所以同样的事情适用于右侧 sidenav,因为md-is-locked-open 用于防止关闭 sidenav。我建议你采取两个右侧导航。
  • 这有点糟糕,但请检查这支笔 codepen.io/next1/pen/aNZYJb?editors=1001 但是当我减小宽度时,我无法隐藏 new 按钮。
  • @End.Game 有什么意见吗?
【解决方案2】:

您正在寻找md-disable-backdrop

例子:

<md-sidenav 
class="md-sidenav-right" 
md-component-id="right" 
md-disable-backdrop> ... 
</md-sidenav>

【讨论】:

    猜你喜欢
    • 2020-08-05
    • 2018-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多