2017-04-12 43 views
0

我打開一個Dialog Window(它有own controller)。 我想要更改differentController中屬於Dialog WindowonRemoving的數據,並將數據發送回parent controller並應用數據。可能嗎?

function openTaskDialog(ev, test) 
{ 
    $mdDialog.show({ 
     controller   : 'differentController', 
     controllerAs  : 'vm', 
     templateUrl  : 'dialog.html', 
     parent    : angular.element($document.body), 
     targetEvent  : ev, 
     clickOutsideToClose: true, 
     onComplete: onComplete, 
     onRemoving: function (event, promise) { 
      console.log('onRemoving',event, promise, $mdDialog) 
     }, 
     locals    : { 
      Test : test, 
      event: ev 

     } 
    }) 
    .finally(function(){ 
    }) 
} 

function onComplete (scope, el, options) { 
    console.log('scope, el, options', scope, el, options) 
} 

回答

1
當你調用該對話框的控制器上的 $mdDialog.hide([response]);功能

,這[response]作爲一個參數由$mdDialog.show()函數返回的承諾傳遞。

如果您致電$mdDialog.hide([response]);承諾將得到解決,如果您致電$mdDialog.cancel([response]);承諾將被拒絕。

function openTaskDialog(ev, test) 
{ 
    $mdDialog.show({ 
     controller   : 'differentController', 
     controllerAs  : 'vm', 
     templateUrl  : 'dialog.html', 
     parent    : angular.element($document.body), 
     targetEvent  : ev, 
     clickOutsideToClose: true, 
     onComplete: onComplete, 
     onRemoving: function (event, promise) { 
      console.log('onRemoving',event, promise, $mdDialog) 
     }, 
     locals    : { 
      Test : test, 
      event: ev 

     } 
    }).then(function(response){ 

    }) 
    .catch(function(responseIfRejected){ 

    }) 
    .finally(function(){ 
    }) 

} 

function onComplete (scope, el, options) { 
    console.log('scope, el, options', scope, el, options) 
} 

function differentController($mdDialog){ 
    this.save = function(){ 
     $mdDialog.hide({ message: 'success' }); 
    }; 
    this.cancel = function(){ 
     $mdDialog.cancel({ message: 'fail' }); 
    }; 
} 
相關問題