【问题标题】:Angular Material - Side Nav角材料 - 侧面导航
【发布时间】:2016-08-10 09:10:00
【问题描述】:

我正在使用 Angular Material 的 sidenav。我已经动态打开了sidenav。面板以背景出现。用户可以单击背景关闭侧导航。我需要的是在点击背景时禁用关闭sidenav。你能帮我解决这个问题吗?

【问题讨论】:

    标签: angular-material


    【解决方案1】:

    给你 - CodePen

    诀窍是访问背景元素并禁用其上的指针事件。

    标记

    <div ng-controller="AppCtrl" layout="column" style="height:500px;" ng-cloak="" class="sidenavdemoBasicUsage" ng-app="MyApp">
      <section id="section" layout="row" flex="">
        <md-content flex="" layout-padding="">
          <div layout="column" layout-fill="" layout-align="top center">
            <div>
              <md-button ng-click="toggleRight()" ng-hide="isOpenRight($event)" class="md-primary">
                Toggle right
              </md-button>
            </div>
          </div>
          <div flex=""></div>
        </md-content>
        <md-sidenav class="md-sidenav-right md-whiteframe-4dp" md-component-id="right">
          <md-content ng-controller="RightCtrl" layout-padding="">
            <md-button ng-click="close()" class="md-primary">
              Close Sidenav Right
            </md-button>
          </md-content>
        </md-sidenav>
      </section>
    </div>
    

    JS

    angular
      .module('MyApp',['ngMaterial', 'ngMessages', 'material.svgAssetsCache'])
      .controller('AppCtrl', function ($scope, $timeout, $mdSidenav, $log, $element) {
        var section,
            backdrop;
    
        $scope.toggleRight = function() {
          $mdSidenav('right')
            .toggle()
            .then(function () {
            $log.debug("toggle right is done");
            // Disable pointer events on backdrop
            section = angular.element($element[0].querySelector('#section'));
            backdrop = section[0].children[0];
            backdrop.style.pointerEvents = 'none';
          });
        }
      })
      .controller('RightCtrl', function ($scope, $timeout, $mdSidenav, $log) {
        $scope.close = function () {
          $mdSidenav('right').close()
            .then(function () {
              $log.debug("close RIGHT is done");
            });
        };
      });
    

    【讨论】:

    • @camden_kid 知道如何使用 angular-material2 侧导航栏
    • @indra257 创建一个问题,我明天会尝试回答。
    • 这很棒!我现在仍然坚持让我的 sidenav 在背景下启动/退出,所以在切换背景之前等待 sidenav 打开看起来并不奇怪。有什么想法吗?
    猜你喜欢
    • 2016-11-06
    • 2016-05-26
    • 2019-07-12
    • 2019-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-16
    • 2022-07-12
    相关资源
    最近更新 更多