角度材料制作sidenav模态

时间:2015-06-16 13:28:35

标签: angularjs modal-dialog angular-material

我是使用角度材料的新手,我有一个关于放置sidenav模态的可能性的问题,

今天我尝试使用sidenav它完美的工作,但我需要另一个选项,我想禁止使用键盘上的'esc'或点击sidenav关闭这个sidenav。

这是默认情况下sidenav的示例。 CODEPEN EXAMPLE

//Javascript : from codepen
angular.module('MyApp').controller('AppCtrl', function ($scope,$timeout, $mdSidenav, $mdUtil, $log) {    
$scope.toggleRight = buildToggler('right');

/**
 * Build handler to open/close a SideNav; when animation finishes
 * report completion in console
 */
function buildToggler(navID) {      
  var debounceFn =  $mdUtil.debounce(function(){
        $mdSidenav(navID)
          .toggle()
          .then(function () {
            $log.debug("toggle " + navID + " is done");
          });
      },300);
  return debounceFn;
}})
.controller('RightCtrl', function ($scope, $timeout, $mdSidenav, $log) {
backdrop : 'static',
$scope.close = function () {
  $mdSidenav('right').close()
    .then(function () {
      $log.debug("close RIGHT is done");
    });
};
});

我发现“backdrop:static”和“keyboard:false”选项但它不起作用。或者我不知道该怎么做。

如果有人知道解决方案,那就太酷了!

2 个答案:

答案 0 :(得分:0)

您可以在打开sidenav后设置md-is-locked-open属性。例如。在事件处理程序中使用范围标志:

function buildToggler(navID) {      
  var debounceFn =  $mdUtil.debounce(function(){
    $mdSidenav(navID)
      .toggle()
      .then(function () {
        $scope.isLockedOpen = true;
      });
  },300);
...

然后在你的模板中使用......如

<md-sidenav class="md-sidenav-right" md-component-id="right" md-is-locked-open="isLockedOpen">

答案 1 :(得分:0)

抱歉迟到了......

我忘记了最后一行代码中的两个大括号:

},300);变成},300)();

function buildToggler(navID) {      
    var debounceFn =  $mdUtil.debounce(function(){
    $mdSidenav(navID)
    .toggle()
    .then(function () {
        $scope.isLockedOpen = true;
    });
},300)();