首页 > 解决方案 > 打开一个模态是返回结果而不是在关闭一个模态之后

问题描述

一旦模式打开,而不是在模式关闭之后,控制器“somePopupCtrl”就会返回 true。

这是代码-

controller('somePopupCtrl', function ($scope, $rootScope) {
function delete() {
  var retVal = true;

  retVal = calculateRetCal();

 if(retVal) {
  var modalInstance = $modal.open({
                    templateUrl: 'removeData.html', 
                    controller: 'removeDataPopupCtrl',
                    backdrop : 'static'
                });

// want to return true for the delete() method when modal is closed.
modalInstance.result.then(function (data) {
 return true;
});
} else {
 return false;
}
 return retVal;
} 
}

方法delete()返回真或假,并基于我们在 UI 上隐藏/显示。

hiding/showing但是,当模式打开而不是模式关闭后,UI 会立即显示。所以modalInstance.result.then代码不会生效。

是否发生可能是因为modalInstance.result.then是异步调用?

仅当模式关闭时如何从方法返回?

标签: angularjsmodal-dialog

解决方案


return 语句不能按预期工作。您的 return 语句不会等待完成模型实例结果函数。这就是异步函数的工作方式。

您应该传递一个回调函数来删除并像这样调用它。

对不起,我没有运行这个,但逻辑是正确的。

function delete(callback) {
  var retVal = true;

  retVal = calculateRetCal();

 if(retVal) {
  var modalInstance = $modal.open({
                    templateUrl: 'removeData.html', 
                    controller: 'removeDataPopupCtrl',
                    backdrop : 'static'
                });

// want to return true for the delete() method when modal is closed.
modalInstance.result.then(function (data) {
 callback(true);
});
} else {
 callback(false)
}
 callback(retVal)
} 

delete(function(response){
  console.log(response);
  //do what u want when you get response as true/false
})


推荐阅读