Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Angularjs mdDialog - How to send back data to my first controller

I send some info to my md-Dialog using 'locals' attribute which works perfectly. After the user presses a button he will send some info through $resource method and get a response. I need to show that response after my md-dialog is closed. How do I send that response to my first controller?

Here's the example:

 //Main controller
 app.controller('Postulation_Ctrl', function($scope, $mdDialog,Postulation, Lista_Complejos){

//md-dialog function
    $scope.showPrompt = function(ev){
        var parentEl = angular.element(document.body);

    var confirm = $mdDialog.show({
         parent: parentEl,
         locals: {

            values: $scope.values,
         },
         targetEvent: ev,
         t templateUrl: 'view/example.html',
         controller: function DialogController($scope, $mdDialog, valores, postulaciones,user_id, Postulation) {

        $scope.result = values;
      
        $scope.createPostulation = function(){
            
    
                $scope.postulation = {};
        //some logic
            
        auxPostulation = new Postulation($scope.postulation);
        auxPostulation.$save(null, function(){
        $scope.queryPost();
                );
            }

        $mdDialog.hide();
        }

$scope.queryPost = function() { 
    Postulation.query(function(response){
    $scope.postulations = response; <----------I NEED TO SEND BACK THIS RESPONSE!!
    },function(error){
        console.log(error);
     })
            };
} 
like image 396
Ezequiel Ramiro Avatar asked Jan 14 '17 14:01

Ezequiel Ramiro


1 Answers

You have 2 options in dialog controller, call $mdDialog.cancel(cancelData) to dismiss dialog and $mdDialog.hide(successData) to close dialog with success.
In your first controller you have this:

var confirm = $mdDialog.show({...}).then(
function(successData) {
   // This will be call because of $mdDialog.hide
   // $scope.firstCtrlScope = successData;
}, function(cancelData) {
   // This will be call because of $mdDialog.cancel
   // $scope.firstCtrlScope = cancelData;
})
like image 84
MeTe-30 Avatar answered Sep 18 '22 01:09

MeTe-30