从角度$ uibModal背景返回数据,请点击

时间:2016-07-31 13:59:30

标签: angularjs angular-ui-bootstrap bootstrap-modal

我试图从uibModal传回一个值。如果用户点击模态的关闭按钮

,我可以定义退货
$scope.close = function () {
    $modalInstance.close($scope.editMade);
};

但是,如果用户点击背景区域,则此功能无效。

如何为该特定事件定义返回值?

2 个答案:

答案 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}
});