angularjs - 打开一个模态是返回结果而不是在关闭一个模态之后
问题描述
一旦模式打开,而不是在模式关闭之后,控制器“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
是异步调用?
仅当模式关闭时如何从方法返回?
解决方案
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
})
推荐阅读
- cgal - 是否可以将 Projection_traits_xy_3 适配器与“2D Polyline Simplification”包一起使用来简化 CGAL 的 2.5D 多段线?
- python - 数据框中特定列的乘法
- python - 无法在条目小部件上设置焦点()
- webpack - 我们是否应该关注 nativescript 共享代码库中 node_modules 文件夹的大小?
- ionic-framework - Xcode 更新后要模拟的问题
- java - JUnit 测试控制台输入应用程序
- dart - 未处理的异常:“String”类型不是“double”SQFlite 类型的子类型
- php - 通过 WP_Query 使用动态多个属性
- java - 与“for”循环相比,为什么 java 流的性能会因工作量较大而下降?
- android - android.app.AlertDialog 自定义主题不起作用