材料角预定义对话框关闭按钮不起作用

时间:2016-12-27 13:13:49

标签: angularjs modal-dialog angular-material

我从一些来源尝试了很多方法,但仍然无法解决材料angularjs的预定义html对话框的关闭按钮的问题。当我按下对话框的外部区域时,它可以正常关闭。

我使用Batarang Angular收到的错误消息取消未定义

var app = angular.module('MyApp', ['ngMaterial', 'ngMessages', 'material.svgAssetsCache'])

app.controller('AppCtrl', function($scope, $mdDialog) {
  $scope.showTermUseDialog = function(ev) {
    $mdDialog.show({
      controller: DialogController,
      contentElement: '#termUseDialog',
      parent: angular.element(document.body),
      targetEvent: ev,
      clickOutsideToClose: true,
      scope: $scope,
      preserveScope: true
    });
  };

  function DialogController($scope, $mdDialog) {
    $scope.hide = function() {
      $mdDialog.hide();
    };

    $scope.cancel = function() {
      $mdDialog.cancel();
    };
  }



});

完整代码可以在这里查看:
http://codepen.io/skylee91/pen/xRoLXo

注意:

如果角度材质版本为1.1.0,则代码按预期运行。但是目前我正在使用最新的稳定版本1.1.1,关闭按钮不会触发ng-click事件。

解决方案

  1. 目前版本1.1.1稳定版本没有解决方案,因为'预呈现的对话框不会链接到任何范围,也不会实例化新的控制器。'
  2. 目前我使用角度模板对话框来解决此问题。

1 个答案:

答案 0 :(得分:3)

您必须将范围和preservescope添加到showTermUseDialog $scope.showTermUseDialog = function(ev) { $mdDialog.show({ controller: DialogController, contentElement: '#termUseDialog', parent: angular.element(document.body), targetEvent: ev, clickOutsideToClose: true, scope: $scope, preserveScope: true }); };

并在html中添加一个关闭调用; ng-click="close()"

请参见此处的plnkr:http://plnkr.co/edit/c1tCfQVMcyj7ZtKRiTOa?p=preview