我在$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']);
});
我希望按照我编写代码的顺序执行代码,这意味着下面的代码仅在确认对话框活动之后才需要执行。
谢谢。
答案 0 :(得分:0)
我能够处理相同类型功能的唯一方法是拆分功能,例如,您有一个动作函数,该函数确定您是否需要模态或仅计算总数:
function something() { // if modal show modal.then(doSomething) }
然后是可以直接调用或从mdModal.then()的任何级别调用的实际计算函数:
function doSomething() { // calculate total }
它可能不像您想要的那样漂亮,但是它可以工作。