Ich möchte eine AlertFactory mit Angular.factory erstellen. Ich habe eine HTML-Vorlage wie folgt definiert
var template = "<h1>{{title}}</h1>";
Der Titel wird vom aufrufenden Controller bereitgestellt und wie folgt angewendet
var compiled = $compile(template)(scope);
body.append(compiled);
Wie kann ich also einen isolierten Bereich vom Controller an die Fabrik übergeben? Ich verwende im Controller den folgenden Code
AlertFactory.open($scope);
$ Scope ist jedoch eine globale Controller-Scope-Variable. Ich möchte nur einen kleinen Bereich für die Fabrik mit nur Titeleigenschaft übergeben.
Danke dir.
quelle
$scope
wirdalertScope
also auch automatisch zerstört , wenn es zerstört wird. @MarkRajcok Dies ist also ein absolut gültiger Anwendungsfall und absolut sicher.Wenn Sie nur Dinge interpolieren müssen, verwenden Sie den Dienst $ interpolate anstelle von $ compile, und dann benötigen Sie keinen Bereich:
Testregler:
Geige
quelle
Folgendes sind die Schritte:
var comiledHTML = angular.element(yourHTML);
var newScope = $rootScope.$new();
var linkFun = $compile(comiledHTML);
var finalTemplate = linkFun(newScope);
YourHTMLElemet.append(finalTemplate);
quelle
var linkFun = $compile(comiledHTML);
Schritt 2Schau dir meinen Plunkr an. Ich generiere programmgesteuert eine Widget-Direktive mit einer Render-Direktive.
https://plnkr.co/edit/5T642U9AiPr6fJthbVpD?p=preview
quelle
Ich nehme an, wenn Sie über einen isolierten Bereich sprechen, sprechen Sie über eine Richtlinie.
Hier ist ein Beispiel dafür. http://jsfiddle.net/rgaskill/PYhGb/
Fügen Sie einen Controller grundsätzlich einer Direktive hinzu, die einen isolierten Bereich definiert hat. Der in den Direktivencontroller eingefügte Bereich ist ein isolierter Bereich. Im Direktiven-Controller können Sie Ihrer AlertFactory injizieren, an die Sie den Isolate-Bereich übergeben können.
quelle