#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 }
Вероятно, это не так красиво, как вы ищете, но это работает.