2017-01-11 2 views
0

Я использую parent $ mdDialog и child $ mdDialog внутри родительского контроллера.

главный контроллер

$scope.openItemEdit = function (item, ev) { 
     $mdDialog.show({ 
      templateUrl: 'app/item-config.tmpl.html', 
      parent: angular.element(document.body), 
      controller: 'ParentController', 
      controllerAs: 'vm', 
      targetEvent: ev, 
      clickOutsideToClose: true, 
      fullscreen: vm.isCustomFullscreen, // Only for -xs, -sm breakpoints. 
      locals: {item: item} 
     }) 
      .then(function() { 
       $scope.status = 'ok'; 
      }, function() { 
       $scope.status = 'cancel'; 
      }); 
    }; 

внутри родительского контроллера:

function addMembers(ev) { 
     $mdDialog.show({ 
      templateUrl: 'app/add-members.html', 
      parent: angular.element(document.body), 
      controller: 'ChildController', 
      controllerAs: 'vm', 
      targetEvent: ev, 
      clickOutsideToClose: true, 
      preserveScope: true, 
      fullscreen: vm.isCustomFullscreen, // Only for -xs, -sm breakpoints. 
      autoWrap: true, 
      skipHide: true 
     }) 
    } 

Я хочу исчезать родительское диалоговое окно, когда я открываю его ребенок. есть ли способ сделать это?

ответ

1

Пожалуйста, попробуйте следующее. идея состоит в том, чтобы открыть дочерний диалог, когда пользователь нажимает ok на родительском диалоговом окне. и ничего не делать при отмене.

$scope.openItemEdit = function (item, ev) { 
     $mdDialog.show({ 
      templateUrl: 'app/item-config.tmpl.html', 
      parent: angular.element(document.body), 
      controller: 'ParentController', 
      controllerAs: 'vm', 
      targetEvent: ev, 
      clickOutsideToClose: true, 
      fullscreen: vm.isCustomFullscreen, // Only for -xs, -sm breakpoints. 
      locals: {item: item} 
     }) 
      .then(function() { 
       $scope.status = 'ok'; 

        $mdDialog.show({ 
           templateUrl: 'app/add-members.html', 
           parent: angular.element(document.body), 
           controller: 'ChildController', 
           controllerAs: 'vm', 
           targetEvent: ev, 
           clickOutsideToClose: true, 
           preserveScope: true, 
           fullscreen: vm.isCustomFullscreen, 
           autoWrap: true, 
           skipHide: true 
          }) 
      }, function() { 
       $scope.status = 'cancel'; 
      }); 
    }; 
0

Я нашел решение:

в детской $ mdDialog. есть свойство, называемое: «parent» - здесь мы рассмотрим, к какому DOM мы присоединяем диалоговое окно. Поэтому я немного изменил его, и теперь родительское диалоговое окно исчезает.

function addMembers(ev) { 
     $mdDialog.show({ 
      templateUrl: 'appadd-members.html', 
      parent: angular.element(document.getElementById('ParentDialog')), 
      controller: 'AddMembersController', 
      controllerAs: 'vm', 
      targetEvent: ev, 
      clickOutsideToClose: true, 
      preserveScope: true, 
      fullscreen: vm.isCustomFullscreen, // Only for -xs, -sm breakpoints. 
      autoWrap: true, 
      skipHide: true 
     }) 
    } 
Смежные вопросы