Ich habe ein benutzerdefiniertes Tag in einer routeProvider
Vorlage, das eine directive
Vorlage erfordert. Das version
Attribut wird mit dem Bereich gefüllt, der dann die richtige Vorlage anfordert.
<hymn ver="before-{{ week }}-{{ day }}"></hymn>
Es gibt mehrere Versionen der Hymne, basierend auf der Woche und dem Tag. Ich hatte erwartet, die Direktive zu verwenden, um den richtigen .html
Teil zu füllen. Die Variable wird von der nicht gelesen templateUrl
.
emanuel.directive('hymn', function() {
var contentUrl;
return {
restrict: 'E',
link: function(scope, element, attrs) {
// concatenating the directory to the ver attr to select the correct excerpt for the day
contentUrl = 'content/excerpts/hymn-' + attrs.ver + '.html';
},
// passing in contentUrl variable
templateUrl: contentUrl
}
});
Es gibt mehrere Dateien in Auszügen Verzeichnis , das gekennzeichnet ist before-1-monday.html
, before-2-tuesday.html
...
angularjs
angularjs-directive
Alen Giliana
quelle
quelle
Antworten:
Sie können die
ng-include
Direktive verwenden.Versuchen Sie so etwas:
UPD. zum Beobachten
ver
Attributquelle
ver
Attributänderungen und die Anweisung zum erneuten Rendern beobachten?<hymn ...>
verwenden, gut funktionieren. Oder ist es vielleicht an der Zeit, bei jsfilddle einen Prototyp zu bauen ?ve take a look at your site, and changed [JSFiddle](http://jsfiddle.net/JQgG5/6/). All you need is
Umfang: {} `in Direktivendeklaration - Bereichsisolation . Außerdem empfehle ich Ihnen dringend, die letzte Version von Angular zu verwenden.<script type="text/ng-template" id="...">
- ist lokale Alternative zu HTML-SeitenSo können Sie templateUrl per Markup bereitstellen
Jetzt müssen Sie nur noch darauf achten, dass die Eigenschaft contentUrl mit einem dynamisch generierten Pfad gefüllt wird.
quelle
once per $compile phase
. Mit anderen Worten, wenn Sieng-repeat
mit Ihrer Direktive arbeiten und eine individuelle Vorlage basierend auf einem bestimmtenng-repeat
Elementkontext festlegen möchten, funktioniert dies nicht, da die$compile
Phase Ihre Direktive einmal durchläuft, bevor dies tatsächlichng-repeat
geschieht. In diesem Sinne wird es einmal aufgerufen ...Dank @pgregory konnte ich mein Problem mit dieser Direktive für die Inline-Bearbeitung lösen
quelle
Sie benötigen hier keine benutzerdefinierte Direktive. Verwenden Sie einfach das Attribut ng-include src. Es ist kompiliert, damit Sie Code einfügen können. Siehe Plunker mit Lösung für Ihr Problem.
quelle
Ich hatte das gleiche Problem und löste es auf eine etwas andere Weise als die anderen. Ich benutze Winkel 1.4.4.
In meinem Fall habe ich eine Shell-Vorlage, die ein CSS-Bootstrap-Bedienfeld erstellt:
Ich möchte je nach Route Panel-Body-Vorlagen einfügen.
Ich habe dann die folgende Vorlage enthalten, wenn die Route ist
#/students
:Die Vorlage panel-body.html lautet wie folgt:
Beispieldaten für den Fall, dass jemand etwas ausprobieren möchte:
quelle
Ich habe ein Beispiel dafür.
quelle