5

Я пытаюсь поместить Angular Material dialog в функцию ссылки директивы. Понятно, что я не понимаю, почему это невозможно. В соответствии с документами, $mdDialog.show находится на области и $mdDialog.hide(); находится в контроллере, определяемом объектом $mdDialog.show. Мне удалось открыть диалоговое окно, и хотя closeModal() выполняет (я могу сказать консоль.log), $mdDialog.hide() никогда не выполняет и модальный никогда не скрывает.

angular.module('app', ['ngMaterial']) 
    .directive('addLayer', ['$mdDialog', function($mdDialog) { 

     return { 

      template: '<h1 ng-click="openDialog()">Open Dialog</h1><div>alert: {{alert}}</div>', 
      scope: {}, 
      link: function(scope) { 

       scope.alert = ''; 
       scope.addLayerDialog = function() { 

        $mdDialog.show({ 

         parent: angular.element(document.body), 
         templateUrl: {...}, 
         controller: function($scope, $mdDialog) { 

          $scope.hide = function() { 
           $mdDialog.hide(); 

          }; 

          $scope.cancel = function() { 

           $mdDialog.cancel(); 

          }; 

          $scope.answer = function(answer) { 
           console.log($mdDialog.hide('answer')); 
           $mdDialog.hide(answer); 

          }; 
         } 

        }).then(function(answer) { 

         scope.alert = 'You said the information was "' + answer + '".'; 

        }, function() { 

         scope.alert = 'You cancelled the dialog.'; 

        }); 

       }; 

      } 

     }; 
    }]); 

Почему это не работает? Невозможно ли определить мода mdDialog из директивы?

Вот является Plnkr я ковырялся с:

http://plnkr.co/edit/qVczPkuZgtL2CCtLRFrH?p=preview

Благодаря кучу. Это заставило меня замочить несколько часов.

ответ

4

Отредактировано: проблема связана с классом «переход-в» css, если вы удалите его, работает скрыть.

Проверьте git для углового материала, кажется, что $ mdDialog использует класс «переход», чтобы отобразить диалог и «переход», чтобы скрыть его, поэтому, если вы включите «переход», то он отключит скрывать.

+0

Спасибо за помощь! К сожалению, ошибка по-прежнему сохраняется -> http://plnkr.co/edit/qVczPkuZgtL2CCtLRFrH?p=preview –

+0

Я отредактировал свой комментарий, поскольку он выглядит, когда я удаляю класс css, который он работает – kwangsa

+0

Awesome. Как вы это поняли? Я бы не подумал об этом через миллион лет. Большое спасибо. –