Проблема с $ mdDialog.show (подтверждение), не может выполнить код ниже директив этого диалога в AngularJS

#c# #angularjs #angularjs-directive #angular-material #mddialog

#angularjs #angular-material #angularjs-директива #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. Разве вы не можете просто переместить свою angular.forEach обработку в функцию » .then() «?

2. @BrendanGreen, нет, у меня разные сценарии, это диалоговое окно используется только в определенных случаях, но приведенные ниже коды должны angular.forEach выполняться постоянно. а также мне может понадобиться использовать другую mdDialog внутри этой mdDialog функции, ее усложняет использование того же кода внутри .then() .

Ответ №1:

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

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

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

 function doSomething() { // calculate total }
  

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