在$mdDialog控制器中,如果出现递归调用的情况,可以使用以下方法来避免该问题。
首先,在$mdDialog控制器中,定义一个新的变量来存储当前状态。
然后,在调用$mdDialog时,将该变量传递给$mdDialog的locals参数中。
最后,在$mdDialog控制器中,使用$injector服务获取该变量,并检查其状态以避免递归调用。
以下是一些示例代码:
在主控制器中定义状态变量:
$scope.dialogOpen = false;
在调用$mdDialog时,将该变量传递给locals参数中:
$mdDialog.show({ locals: { dialogOpen: $scope.dialogOpen }, controller: 'DialogController', templateUrl: 'dialog.html', parent: angular.element(document.body), clickOutsideToClose: true });
在$mdDialog控制器中使用$injector服务获取该变量,并检查其状态以避免递归调用:
app.controller('DialogController', function($scope, $mdDialog, $injector, dialogOpen) { if (dialogOpen) { $mdDialog.hide(); return; } $scope.dialogOpen = true; // ... rest of the controller code });
请注意,在以上示例中,我们使用了$injector服务来获取$mdDialog控制器中定义的变量。您可以根据您的代码需要,在该服务中添加其他变量以实现您的逻辑。