我试图从uibModal传回一个值。如果用户点击模态的关闭按钮
,我可以定义退货$scope.close = function () {
$modalInstance.close($scope.editMade);
};
但是,如果用户点击背景区域,则此功能无效。
如何为该特定事件定义返回值?
答案 0 :(得分:7)
当您点击外面的背景时,它会在内部进行解散。
尝试使用内部模态:
char new_Data[sizeof(data)/sizeof(char)];
for(i=1 ; i < sizeof(new_Data) ; i++){
new_Data[i] = data[i];
}
并使用它来处理数据:
$modalInstance.dismiss($scope.editMade);
检查这个工作的plunker。它使用我提到的解雇
http://embed.plnkr.co/YdWmqYPFBNbv4vhQZc4t/
解除模态时将自定义数据传递给父控制器:
模态控制器中的代码:
instance.result.then(function(){
//Get triggers when modal is closed
}, function(){
//gets triggers when modal is dismissed. You can basically handle data here
});
然后在您的父控制器中:
$scope.$on("modal.closing",function(){
$rootScope.$broadcast("modalClosing",$scope.editMade);
});
您可以通过阅读以下文档了解更多信息: https://github.com/angular-ui/bootstrap/tree/master/src/modal/docs
答案 1 :(得分:1)
在模态控制器中,您可以执行以下操作:
$scope.$on('modal.closing', function(event, reason, closed) {
if (reason == "backdrop click" || reason == "escape key press")
{
event.preventDefault();
$uibModalInstance.close({"data": somedata});
}
});
这样你就可以在modalInstance上获得成功回调
modalInstance.result.then(function(response) {
// here response will be whatever is passed. in this sample {"data": somedata}
});