2016-09-06 26 views
5

jestem tring aby zamknąć okno przez ten sposób:kanciasty materiał blisko mdDialog z dyrektywą szablonu

showAlert(ev) { 
    this.mdDialog.show({ 
     restrict: 'E', 
     template:'<loader></loader>' + 
     ' <md-button ng-click="this.mdDialog.hide()" class="md-primary">' + 
    '  Close Dialog' + 
    ' </md-button>' , 
     parent: angular.element(document.body.childNodes[5]), 
     clickOutsideToClose:true 
    }); 
}; 
closeDialog() { 
    this.mdDialog.hide(); 
}; 

ale pojawi się przycisk i nic nie robić. Każdy pomysł?

+0

Jakiś specjalny powód, dla którego nie używasz $ mdDialog zamiast this.mdDialog? Możesz wprowadzić $ mdDialog we własnej dyrektywie bez problemów ... – troig

+0

Dzięki, ale to nie ma znaczenia ... –

+0

Czy masz szansę na umieszczenie kodu w plunker? – troig

Odpowiedz

1

Proszę bardzo - CodePen

Markup

<div ng-controller="MyController as vm" class="md-padding" ng-cloak="" ng-app="app"> 
    <md-button class="md-primary md-raised" ng-click="vm.show($event)">Open</md-button> 
    </script> 
</div> 

JS

angular.module('app',['ngMaterial']) 

.controller('MyController', function($scope, $mdDialog) { 
    this.show = function(ev) { 
    $mdDialog.show({ 
     restrict: 'E', 
     template:'<loader></loader>' + 
     ' <md-button ng-click="vm.hide()" class="md-primary">' + 
    '  Close Dialog' + 
    ' </md-button>' , 
     parent: angular.element(document.body), 
     clickOutsideToClose:true, 
     targetEvent: ev, 
     controller: DialogController, 
     controllerAs: "vm" 
    }); 
    }; 
}); 

function DialogController($scope, $mdDialog) { 
    this.hide = function() { 
    $mdDialog.hide(); 
    }; 
} 
+0

Czy istnieje "ten" przekonań do tego rozwiązania? Czytałem kiedyś o wytycznym Johna Papy, aby uniknąć używania '$ scope''a –

+0

, które nie zadziałało na mnie. Próbowałem również przenieść do konstruktora $ scope, a następnie zapisać go w this.myscope = $ scope i nadal nie pojawia się żaden błąd poza wyjątkiem Wanrning: może nie działać poprawnie w przewijanym statycznym kontenerze nadrzędnym. –