Ошибка с $ mdDialog.show (подтверждение), не в состоянии выполнить код ниже этой директивы диалога в AngularJS - PullRequest
0 голосов
/ 11 апреля 2019

Я нахожу эту проблему с $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 голосов
/ 11 апреля 2019

Единственный способ, которым я смог справиться с функциональностью того же типа, - это разделить функцию, например, у вас есть функция действия, которая определяет, нужен ли вам модальный режим или вы можете просто вычислить итоговое значение:

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

тогда фактическая функция вычисления, которую можно вызвать напрямую или с любого уровня mdModal.then ():

function doSomething() { // calculate total }

Возможно, она не такая красивая, как вы ищете, но онаработы.

...