Próbuję dołączyć fragment kodu HTML do pliku ng-repeat
, ale nie mogę go włączyć. Wygląda na to, że obecna składnia ng-include
jest inna niż poprzednio: widzę wiele przykładów
<div ng-include src="path/file.html"></div>
Ale w oficjalnych dokumentach mówi się używać
<div ng-include="path/file.html"></div>
Ale potem na stronie jest pokazany jako
<div ng-include src="path/file.html"></div>
Niezależnie od tego próbowałem
<div ng-include="views/sidepanel.html"></div>
<div ng-include src="views/sidepanel.html"></div>
<ng-include src="views/sidepanel.html"></ng-include>
<ng-include="views/sidepanel.html"></ng-include>
<ng:include src="views/sidepanel.html"></ng:include>
Mój fragment nie jest zbyt dużym kodem, ale wiele się dzieje; Przeczytałem w temacie Dynamicznie ładuj szablonng-repeat
, który może powodować problemy, więc zastąpiłem treść sidepanel.html
tylko słowem foo
i nadal nic.
Próbowałem również zadeklarować szablon bezpośrednio na stronie w następujący sposób:
<script type="text/ng-template" id="tmpl">
foo
</script>
I przeglądanie wszystkich wariantów ng-include
odwoływania się do skryptu id
i wciąż nic.
Moja strona zawierała o wiele więcej, ale teraz ograniczyłem ją do tego:
<!-- index.html -->
<html>
<head>
<!-- angular includes -->
</head>
<body ng-view="views/main.html"> <!-- view is actually set in the router -->
<!-- views/main.html -->
<header>
<h2>Blah</h2>
</header>
<article id="sidepanel">
<section class="panel"> <!-- will have ng-repeat="panel in panels" -->
<div ng-include src="views/sidepanel.html"></div>
</section>
</article>
<!-- index.html -->
</body>
</html>
Nagłówek jest renderowany, ale mój szablon nie. Nie otrzymuję żadnych błędów w konsoli ani z Węzła, a jeśli kliknę link w src="views/sidepanel.html"
narzędziach programistycznych, przejdzie do mojego szablonu (i wyświetli się foo
).
LUB
LUB
Punkty do zapamiętania:
-> Brak spacji w src
-> Pamiętaj, aby używać src w pojedynczym cudzysłowie
źródło
ng-include="'...'"
Składnia wygląda zdecydowanie lepiej.W przypadku rozwiązywania problemów ważne jest, aby wiedzieć, że ng-include wymaga, aby ścieżka url pochodziła z katalogu głównego aplikacji, a nie z tego samego katalogu, w którym znajduje się częściowy plik.html. (natomiast częściowo.html to plik widoku, w którym można znaleźć wbudowany znacznik ng-include).
Na przykład:
źródło
add-more.html
był w tym samym katalogu coapp.html
. W mojej odpowiedziviews/
znajduje się w tym samym katalogu coapp.html
.Dla tych, którzy szukają najkrótszego możliwego rozwiązania „mechanizmu renderującego elementy” z częściowego, więc kombinacja ng-repeat i ng-include :
<div ng-repeat="item in items" ng-include src="'views/partials/item.html'" />
Właściwie, jeśli użyjesz go w ten sposób dla jednego repeatera, zadziała, ale nie dla 2 z nich! Angular (v1.2.16) z jakiegoś powodu przerazi się, jeśli masz 2 z nich jeden po drugim, więc bezpieczniej jest zamknąć div przed wersją xhtml:
<div ng-repeat="item in items" ng-include src="'views/partials/item.html'"></div>
źródło
<tbody ng-repeat="item in vm.items" ng-include="vm.searchTemplateBodyUrl" ng-cloak>
. Dzięki!Może to pomoże początkującym
źródło
To działało dla mnie:
kompletny div:
źródło
ng-view
ing-inclue
tego samego elementu; src (patrz templateUrl ) powinien być skonfigurowany w routerze.someVar + 'some string'
Spróbuj tego
źródło
Podczas kompilacji ng występuje błąd nie znaleziono pliku (404). Możemy więc użyć poniższego kodu
za sprawą
źródło