Andere Version ähnlich der von Maxim Shoustin
Ich mochte die Antwort, aber der Teil, der mich störte, war die Verwendung <script id="...">
als Container für die Vorlage des Modals.
Ich wollte die Vorlage des Modals in einem versteckten Ordner platzieren <div>
und den inneren HTML-Code mit einer Bereichsvariablen binden, die modal_html_template
hauptsächlich deshalb aufgerufen wird, weil ich es für korrekter (und komfortabler in WebStorm / PyCharm zu verarbeiten) halte, den HTML-Code der Vorlage in a <div>
anstatt in zu platzieren<script id="...">
Diese Variable wird beim Aufruf verwendet $modal({... 'template': $scope.modal_html_template, ...})
Um das innere HTML zu binden, habe ich inner-html-bind
eine einfache Direktive erstellt
Schauen Sie sich das Beispiel an plunker
<div ng-controller="ModalDemoCtrl">
<div inner-html-bind inner-html="modal_html_template" class="hidden">
<div class="modal-header">
<h3>I'm a modal!</h3>
</div>
<div class="modal-body">
<ul>
<li ng-repeat="item in items">
<a ng-click="selected.item = item">{{ item }}</a>
</li>
</ul>
Selected: <b>{{ selected.item }}</b>
</div>
<div class="modal-footer">
<button class="btn btn-primary" ng-click="ok()">OK</button>
<button class="btn btn-warning" ng-click="cancel()">Cancel</button>
</div>
</div>
<button class="btn" ng-click="open()">Open me!</button>
<div ng-show="selected">Selection from a modal: {{ selected }}</div>
</div>
inner-html-bind
Richtlinie:
app.directive('innerHtmlBind', function() {
return {
restrict: 'A',
scope: {
inner_html: '=innerHtml'
},
link: function(scope, element, attrs) {
scope.inner_html = element.html();
}
}
});