Angular UI Modal, Inline-Vorlage und Controller

8

Ich möchte eine sehr einfache Bestätigungsbox mit UI-modal erstellen, die ich erfolgreich verwendet habe, um komplizierte Modale zu erstellen, die ihre Vorlage und ihren Controller aus externen Dateien in der Vergangenheit laden.

Es ist so einfach, dass ich mich nicht auf externe Vorlagen- und Controller-Dateien verlassen möchte, sondern nur auf ein einfaches Feld mit einer Schließen-Schaltfläche, die irgendwie mit einem Controller verbunden ist, der direkt in der Modal-Instanz deklariert ist.

Hier ist was ich erfolglos versucht habe ...

%Vor%     
jonhobbs 03.04.2014, 21:09
quelle

3 Antworten

7

Sieht so aus, als müssten Sie $ scope in Ihre Controller-Funktion injizieren

controller: function($scope){

Der Gültigkeitsbereich der modalen Vorlage ist nicht identisch mit dem Bereich im Controller, in dem Sie die modale Instanz definiert haben.

Der Grund dafür, dass Sie keine undefinierten Fehler bekommen, ist $ scope ist eine Closure-Variable, so dass das Hinzufügen von .cancel () gut funktioniert. Da es sich jedoch nicht um den gleichen Bereich des Modals handelt, sieht der ng-click in seinem Bereich keine .cancel ().

Ich replizierte in diesem jsbin: Ссылка

Bearbeiten: Da Sie erwähnt haben, dass Sie keine externen Dateien für eine Vorlage wünschen, finden Sie hier eine Demo zur Definition der Vorlage für das Modal in der Vorlage der Ansicht, in der sie verwendet wird.

Ссылка

Sie können HTML in ein Inline-Skript einfügen ...

%Vor%     
JeremyWeir 04.04.2014, 04:21
quelle
2

Der Wert, den Sie an 'template' übergeben, muss gültiger HTML-Code sein und idealerweise die entsprechenden modalen CSS-Klassen enthalten.

Sie müssen möglicherweise auch den Bereich für den Controller übergeben.

%Vor%

Im Allgemeinen musste ich das nicht machen, aber da Sie den Controller in der offenen Methode definieren, kann es notwendig sein. Laut den Dokumenten sollte es einen neuen Bereich als Kind von rootScope erstellen, aber ich vermute, dass Ihre Laufleistung variiert. Ich wünschte, die Anweisungen auf der Website wären etwas informativer zu diesem Thema.

Sie können auch $ close und $ entlassen versuchen. Ich habe sie nie ausprobiert, aber da Sie mit der Scope-Variablen kein Glück haben, könnten Sie das brauchen, was Sie brauchen.

    
MBielski 03.04.2014 21:16
quelle
1

Ich versuche nur etwas Ähnliches zu tun und stolperte darüber. Ich weiß, es ist alt, aber es könnte jemandem helfen.

Stellen Sie einfach

%Vor%

in der Abbruchfunktion

    
Troy Wray 20.05.2015 13:16
quelle