0

Skript

if (true) { 
    if(!confirm("Are you sure ?")) 
    { 
    event.preventDefault(); 
    } 
    } 

Wie kann ich scharfkantiges Material Dialogfeld aufrufen, anstatt Standard-JavaScript-Bestätigung? Etwas wie

function(event) { 
     var confirm = $mdDialog.confirm() 
      .title('Are you sure ?') 
      .targetEvent(event) 
      .ok('ok') 
      .cancel('cancel'); 

     $mdDialog.show(!confirm).then(function() { 
      event.preventDefault(); 
     }); 
    }; 
+0

nicht-'confirm() 'Dialoge sind fast immer async, einen Rückruf anstelle eines Rückgabewert benötigen. – dandavis

Antwort

1

überprüfen Sie diesen Stift. Übergeben Sie einfach $event in ng-click, und verwenden Sie den Dienst $mdDialog, der von der Materialbibliothek bereitgestellt wird, um eine Warnungsdialoge-Box zu öffnen. http://codepen.io/next1/pen/KzvwXq

Htmlfile

<md-button class="md-primary md-raised" ng-click="showConfirm($event)"> 
    Confirm Dialog 
</md-button> 

JS-Datei

$scope.showConfirm = function(ev) { 
var confirm = $mdDialog.confirm() 
     .title('Are you sure?') 
     .textContent('Are you really sure?') 
     .ariaLabel('Lucky day') 
     .targetEvent(ev) 
     .ok('Yes') 
     .cancel('No'); 

$mdDialog.show(confirm).then(function() { 
    $scope.status = 'Yes'; 
}, function() { 
    $scope.status = 'No'; 
}); 
+0

danke, aber es ist nicht für den Knopf klicken. Stattdessen benutze ich es für das Formular $ dirty check –

+1

Sie können Ihre Formularsammlung für alle Änderungen in '$ dirty' beobachten und rufen Sie die Funktion, um die Dialoge zu öffnen. Überprüfen Sie den Stift erneut. Ich habe ein paar Änderungen vorgenommen. – nextt1

+0

Ihre Antwort wurde aktualisiert, die die Warnung wie erwartet anzeigt. Allerdings verhindert es 'event.preventDefault();' nicht, bis der Benutzer es bestätigt. Vielen Dank –