Mam niestandardowy tag w routeProvider
szablonie, który wywołuje directive
szablon. version
Atrybut będzie wypełniana przez zakres które następnie wzywa do prawej szablonu.
<hymn ver="before-{{ week }}-{{ day }}"></hymn>
Istnieje wiele wersji hymnu w zależności od tygodnia i dnia. Spodziewałem się, że wykorzystam dyrektywę do wypełnienia właściwej .html
części. Zmienna nie jest odczytywana przez 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
}
});
Istnieje wiele plików w katalogu fragmentów, które są znakowane before-1-monday.html
, before-2-tuesday.html
...
angularjs
angularjs-directive
Alen Giliana
źródło
źródło
Odpowiedzi:
Możesz użyć
ng-include
dyrektywy.Spróbuj czegoś takiego:
UPD. do oglądania
ver
atrybutuźródło
ver
zmiany atrybutów i dyrektywę ponownego wydania?<hymn ...>
powinien działać dobrze. A może czas skonstruować prototyp w jsfilddle ?ve take a look at your site, and changed [JSFiddle](http://jsfiddle.net/JQgG5/6/). All you need is
zakres: {} `w deklaracji dyrektywy - izolacja zakresu . Gorąco polecam również skorzystanie z ostatniej wersji angular.<script type="text/ng-template" id="...">
- jest lokalną alternatywą dla stron htmlMożesz więc podać templateUrl za pomocą znaczników
Teraz po prostu uważaj, aby właściwość contentUrl zapełniła się dynamicznie generowaną ścieżką.
źródło
once per $compile phase
. Innymi słowy, jeśli używaszng-repeat
z dyrektywą i chcesz ustawić indywidualny szablon w oparciu o konkretnyng-repeat
kontekst elementu, to nie zadziała, ponieważ$compile
faza przechodzi przez dyrektywę raz, zanimng-repeat
nastąpi faktyczna . Więc w tym sensie jest nazywany raz ...Dzięki @pgregory mogłem rozwiązać mój problem, używając tej dyrektywy do edycji bezpośredniej
źródło
Nie potrzebujesz tutaj niestandardowej dyrektywy. Po prostu użyj atrybutu ng-include src. Jest skompilowany, więc możesz umieścić kod w środku. Zobacz plunker z rozwiązaniem Twojego problemu.
źródło
Miałem ten sam problem i rozwiązałem go nieco inaczej niż pozostali. Używam kątowego 1.4.4.
W moim przypadku mam szablon powłoki, który tworzy panel CSS Bootstrap:
Chcę dołączyć szablony korpusów paneli w zależności od trasy.
Następnie mam dołączony następujący szablon, gdy trasa jest
#/students
:Szablon panel-body.html w następujący sposób:
Przykładowe dane na wypadek, gdyby ktoś chciał spróbować:
źródło
Mam na to przykład .
źródło