2016-09-06 2 views
5

Я Тринг, чтобы закрыть диалоговое окно, таким образом:угловой материал близко mdDialog из шаблона директивы

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(); 
}; 

но появляется кнопка и ничего не делать. Любая идея?

+0

Любая особая причина, почему вы не используете $ mdDialog вместо this.mdDialog? Вы можете вводить $ mdDialog в свою собственную директиву без проблем ... – troig

+0

Спасибо, но это не имеет значения. –

+0

Есть ли шанс надеть свой код в плункер? – troig

ответ

1

Здесь вы идете - 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

Есть ли это? Однажды я прочитал руководство Джона Папы, чтобы избежать использования '$ scope' –

+0

, это не сработало для меня. Я также попытался принести $ scope в конструктор, а затем сохранить его в области this.myscope = $, и до сих пор не появляется ошибка, кроме Wanrning: может не работать должным образом в прокручиваемом статичном позиционированном контейнере. –