我从一些来源尝试了很多方法,但仍然无法解决材料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
事件。
答案 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