$ mdDialog.show(confirm)出现问题,无法在AngularJS中执行此对话框指令下的代码

时间:2019-04-11 05:03:47

标签: c# angularjs angularjs-directive angular-material mddialog

我在$mdDialog.show(confirm)中发现了此问题,对话框函数下面的代码甚至在弹出窗口之前就已执行。

我可以通过设置一个标志来限制以下代码的执行来处理。但对话活动完成后,它会转到Error(ie, resolvePromise()),而不会执行以下代码:

//This is the code I have used.

var confirm = $mdDialog.confirm()
             .title('Early Dispatch Date Available.')
             .textContent('Do you want to reschedule and Change Quantity.')
              .ariaLabel('day')
             .ok('Yes')
             .cancel('Plan on Date');

$mdDialog.show(confirm).then(function (obj)
{
    $scope.targetDates[lastItem].Qty = 0;
    return;
}, function () {                
    condition = 'QtyLessThanCap';
});

//for example,this is the code which gets executed even before the comfirmation dialog pops up..

angular.forEach($scope.targetDates, function (Datess) 
{
      totalCalQty = totalCalQty + parseInt(Datess['Qty']);                   
});

我希望按照我编写代码的顺序执行代码,这意味着下面的代码仅在确认对话框活动之后才需要执行。

谢谢。

1 个答案:

答案 0 :(得分:0)

我能够处理相同类型功能的唯一方法是拆分功能,例如,您有一个动作函数,该函数确定您是否需要模态或仅计算总数:

function something() { // if modal show modal.then(doSomething) }

然后是可以直接调用或从mdModal.then()的任何级别调用的实际计算函数:

function doSomething() { // calculate total }

它可能不像您想要的那样漂亮,但是它可以工作。