2016-06-02 10 views
2

Auf ngDialog (https://github.com/likeastore/ngDialog), gibt es eine eingebaute Möglichkeit, einen Dialog aus der Vorlage selbst zu schließen? I.e. also brauche ich keine Funktionen in der Steuerung, die den Dialog aufrufen?ngDialog - wie Dialog von der Vorlage zu schließen (d. H. Keine Controller-Funktionen)?

Dies ist meine Vorlage (errorPopup.html):

<div> 
    <div class="alert alert-warning"> 
    <div class="errorLogo"><i class="icon-exclaim"></i></div> 
    <div class="errorContent" data-ng-bind-html="errorMessage"></div> 
    </div> 
    <div class="buttonWrapper"> 
    <button type="button" class="btn-primary pull-right"> 
     <span res="close"></span> 
    </button> 
    </div> 
</div> 

Und das ist, wie ich den Dialog zu öffnen:

function showErrorPopup() { 
    ngDialog.open({ 
    template: 'errorPopup.html', 
    scope: $scope, 
    className: 'ngdialog-theme-default ngdialog-cart-theme', 
    showClose: true, 
    appendTo: 'div[ui-view]', 
    closeByDocument: false 
    }); 
} 

Also, wenn ich rufe showErrorPopup() Ich habe ein Dialog angezeigt zu bekommen, Allerdings muss ich diese Schaltfläche "schließen", um das Popup tatsächlich zu schließen/schließen. Ab sofort ist dies nur ein Plan-Button, der nichts bewirkt.

Gibt es etwas, was ich tun kann, ein Template-Level (ohne den Code meines Controllers zu ändern), damit der Button funktioniert?

Vielleicht sollte ich eine Standardtaste anstelle meiner eigenen verwenden? Wenn das so ist, wie?

PS: Ich merke, dass das Klicken auf die X-Taste oben rechts funktioniert, das Popup wird geschlossen.

Vielen Dank!

+0

Es schließt das Fenster, fühlt sich aber nicht richtig an. Was würde sich dann richtig anfühlen? –

+0

@AlonEitan Ich habe meine Frage umformuliert, ich versuche nur herauszufinden, wie ich den Dialog innerhalb der Vorlage schließe (ohne eine Funktion im Controller) – wdanda

+0

also tun Sie einfach '$ scope.ngDialog = ngDialog; 'in der Steuerung und in der Ansicht' ng-click = "ngDialog.close()" –

Antwort

3

Wenn Sie die Schließen-Funktion der ngDialog direkt aus der Ansicht aufrufen möchten, müssen Sie das Modul selbst auf den Bereich innerhalb der Steuerung injizieren, damit es aus der Ansicht verfügbar wird :

$scope.ngDialog = ngDialog; 

Dann können Sie ihn direkt aus der Ansicht verwenden:

<button ng-click="ngDialog.close()">Close</button> 
0

Es ist schwer zu sagen, was genau Sie falsch machen, bis Sie einige Controller und app.js und HTML-Code Inhalte einfügen. Ja, hat ngDialog integrierte Möglichkeit, den Dialog

Sie den Klassennamen Stellen Sie sicher, die Schließung auf ‚ngdialog-theme-Flach ngdialog-theme-custom‘ oder anderer CSS-Klasse als innen offene Funktion in der Dokumentation beschrieben .

0

Sie haben hinzugefügt Handler mit dem Namen "closeThisDialog", aber Funktion hat einen anderen Namen "closePopup".

Vielleicht ist es Ihr Problem.

+0

Thx geschrieben, aber Sie haben wahrscheinlich nur mit meiner Frage verwirrt. Ich habe es umformuliert, um diese genaue Verwechslung zu vermeiden: D – wdanda

0

einfach die folgenden Schritte 1.when App

var app = angular.module('sampleApp', ['ngDialog']);
2.use Taste wie diese

<button ng-click="clickMe()">Click to Open</button> 

3.put dies in Ihrem Controller

`$scope.clickMe = function() { 
    ngDialog.open(); 
};` 

standardmäßig die Schaffung Es hat Code zum Schließen, es wird automatisch geschlossen, wenn Sie auf Schließen klicken. Hoffe, es wird nützlich sein

+0

Genau das versuche ich zu vermeiden. Das Problem, das ich habe, ist, dass ich die Vorlage auf mehreren Seiten wiederverwende und das würde bedeuten, dass ich diese clickMe-Funktion auf jedem meiner Controller haben müsste ... – wdanda

5

Sie `t ngDialog Modul in Ihrem $ Umfang haben zu injizieren.Sie können closeThisDialog() Funktion in Ihrem Popup-Vorlage direkt anrufen:

<button ng-click="closeThisDialog(0)">Close</button> 

Funktionsargument der Wert Popup mit aufzulösen.