Angularjs 具有多个保存选项的Angular JS材质对话框

Angularjs 具有多个保存选项的Angular JS材质对话框,angularjs,angularjs-material,Angularjs,Angularjs Material,我正在尝试创建一个对话框,其中包含多个要保存的选项和另一个要保存和关闭的选项以及取消选项,其中(保存和关闭)按钮将保存数据并关闭对话框,而(保存)按钮将在模式中保存数据,然后打开模式的空实例,问题是,使用“保存”添加两个选项时,我只看到“保存”和“取消”按钮,下面是我正在修改的角度材质片段示例: $scope.showConfirm = function(ev) { // Appending dialog to document.body to cover sidenav in docs

我正在尝试创建一个对话框,其中包含多个要保存的选项和另一个要保存和关闭的选项以及取消选项,其中(保存和关闭)按钮将保存数据并关闭对话框,而(保存)按钮将在模式中保存数据,然后打开模式的空实例,问题是,使用“保存”添加两个选项时,我只看到“保存”和“取消”按钮,下面是我正在修改的角度材质片段示例:

$scope.showConfirm = function(ev) {
    // Appending dialog to document.body to cover sidenav in docs app
    var confirm = $mdDialog.confirm()
          .title('Would you like to delete your debt?')
          .textContent('All of the banks have agreed to forgive you your debts.')
          .ariaLabel('Lucky day')
          .targetEvent(ev)
          .ok('Save and Close')
           .ok('Save')
          .cancel('Cancel');
单击确认对话框按钮时,我希望看到三个按钮,下面是修改后的代码:


您无法实现所描述的对话框演示

此方法提供一个预配置的对话框,该对话框只能有两个操作按钮。您可以通过向提供更多配置参数来构建所需的对话框

这里有一个例子

您需要为自定义对话框提供HTML:

<script type="text/ng-template" id="custom-confirm.html">
  <md-dialog>
    <md-dialog-content>
      <md-content layout-padding>
        <div>...</div>
      </md-content>
    </md-dialog-content>
    <md-dialog-actions>
      <md-button ng-click="cancel()">Cancel</md-button>
      <md-button ng-click="save()">Save</md-button>
      <md-button ng-click="saveAndClose()">Save and Close</md-button>
    </md-dialog-actions>
  </md-dialog>
</script>

编辑 要让save按钮重新打开同一个对话框,只需将打开对话框的调用链接到首先隐藏对话框的调用上。之所以可以这样做,是因为
$mdDialog.hide()
的返回值是一个承诺,一旦对话框隐藏了自己,它就会得到解决

要继续上面的示例,您需要进行一些轻微的重构,以确保不隐藏
$scope

$scope.showCustomConfirm = showCustomConfirm;
function showCustomConfirm() {
   $mdDialog.show({
     controller: function ($scope, $mdDialog) {
       $scope.save = function () {
         // Save data...
         $mdDialog.hide().then(showCustomConfirm);
       };
       // Everything else as before...
     },
   });
}

您无法实现所描述的对话框演示

此方法提供一个预配置的对话框,该对话框只能有两个操作按钮。您可以通过向提供更多配置参数来构建所需的对话框

这里有一个例子

您需要为自定义对话框提供HTML:

<script type="text/ng-template" id="custom-confirm.html">
  <md-dialog>
    <md-dialog-content>
      <md-content layout-padding>
        <div>...</div>
      </md-content>
    </md-dialog-content>
    <md-dialog-actions>
      <md-button ng-click="cancel()">Cancel</md-button>
      <md-button ng-click="save()">Save</md-button>
      <md-button ng-click="saveAndClose()">Save and Close</md-button>
    </md-dialog-actions>
  </md-dialog>
</script>

编辑 要让save按钮重新打开同一个对话框,只需将打开对话框的调用链接到首先隐藏对话框的调用上。之所以可以这样做,是因为
$mdDialog.hide()
的返回值是一个承诺,一旦对话框隐藏了自己,它就会得到解决

要继续上面的示例,您需要进行一些轻微的重构,以确保不隐藏
$scope

$scope.showCustomConfirm = showCustomConfirm;
function showCustomConfirm() {
   $mdDialog.show({
     controller: function ($scope, $mdDialog) {
       $scope.save = function () {
         // Save data...
         $mdDialog.hide().then(showCustomConfirm);
       };
       // Everything else as before...
     },
   });
}

谢谢您的代码片段,我如何修改保存按钮以保存,然后启动对话框而不是仅触发保存功能?因此,当我按下保存时,它将保存,然后打开相同的对话框没有问题。我已经更新了我的答案,其中包括一个编辑,希望能够解决您的评论。感谢更新,现在甚至保存和关闭都会触发对话框再次出现,我想要实现的是保存amd关闭保存功能并关闭对话框,使用相同的保存功能保存按钮,然后启动空对话框。啊,对,有点小错误。要解决这个问题,您需要做的就是将实际保存数据的操作移动到一个单独的函数中,然后让save和save以及close按钮触发它。更新的fork。感谢您对问题和解决方案的清晰描述,将其标记为answer谢谢您的代码片段,我如何修改保存按钮以保存,然后启动对话框而不是仅触发保存功能?因此,当我按下保存时,它将保存,然后打开相同的对话框没有问题。我已经更新了我的答案,其中包括一个编辑,希望能够解决您的评论。感谢更新,现在甚至保存和关闭都会触发对话框再次出现,我想要实现的是保存amd关闭保存功能并关闭对话框,使用相同的保存功能保存按钮,然后启动空对话框。啊,对,有点小错误。要解决这个问题,您需要做的就是将实际保存数据的操作移动到一个单独的函数中,然后让save和save以及close按钮触发它。更新的fork。感谢您对问题和解决方案的清晰描述,并将其标记为答案