Ich versuche, ein HTML-Snippet in ein einzuschließen ng-repeat
, aber ich kann das Include nicht zum Laufen bringen. Es scheint, dass die aktuelle Syntax von ng-include
anders ist als zuvor: Ich sehe viele Beispiele mit
<div ng-include src="path/file.html"></div>
Aber in den offiziellen Dokumenten heißt es zu verwenden
<div ng-include="path/file.html"></div>
Aber dann auf der Seite wird es als angezeigt
<div ng-include src="path/file.html"></div>
Egal, ich habe es versucht
<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>
Mein Snippet ist nicht sehr viel Code, aber es ist viel los; Ich habe in der Vorlage "Dynamisch laden"ng-repeat
gelesen , dass dies ein Problem verursachen könnte. Deshalb habe ich den Inhalt von sidepanel.html
nur durch das Wort foo
und immer noch durch nichts ersetzt.
Ich habe auch versucht, die Vorlage direkt auf der Seite wie folgt zu deklarieren:
<script type="text/ng-template" id="tmpl">
foo
</script>
Und alle Variationen der ng-include
Referenzierung des Skripts durchgehen id
und immer noch nichts.
Meine Seite enthielt viel mehr, aber jetzt habe ich sie auf genau das reduziert:
<!-- 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>
Der Header wird gerendert, meine Vorlage jedoch nicht. Ich erhalte keine Fehler in der Konsole oder vom Knoten. Wenn ich in den Entwicklertools auf den Link klicke, komme src="views/sidepanel.html"
ich zu meiner Vorlage (und den Anzeigen foo
).
ODER
ODER
Punkte, die man sich merken sollte:
-> Keine Leerzeichen in src
-> Denken Sie daran, für src ein einfaches Anführungszeichen in einem doppelten Anführungszeichen zu verwenden
quelle
ng-include="'...'"
Syntax sieht definitiv besser aus.Für diese Fehlerbehebung ist es wichtig zu wissen, dass ng-include erfordert, dass der URL-Pfad aus dem App-Stammverzeichnis stammt und nicht aus demselben Verzeichnis, in dem sich die partielle.html befindet. (Während teilweise.html die Ansichtsdatei ist, in der sich das Inline-Markup-Tag ng-include befindet).
Zum Beispiel:
quelle
add-more.html
es sich im selben Verzeichnis wie befindetapp.html
. In meiner Antwortviews/
befindet sich im selben Verzeichnis wieapp.html
.Für diejenigen, die nach der kürzestmöglichen "Item Renderer" -Lösung aus einem Teil suchen, bietet eine Kombination aus ng-repeat und ng-include :
<div ng-repeat="item in items" ng-include src="'views/partials/item.html'" />
Wenn Sie es für einen Repeater so verwenden, funktioniert es tatsächlich, aber nicht für zwei davon! Angular (v1.2.16) wird aus irgendeinem Grund ausflippen, wenn Sie zwei davon nacheinander haben. Daher ist es sicherer, das div vor xhtml zu schließen:
<div ng-repeat="item in items" ng-include src="'views/partials/item.html'"></div>
quelle
<tbody ng-repeat="item in vm.items" ng-include="vm.searchTemplateBodyUrl" ng-cloak>
. Vielen Dank!Vielleicht hilft dies Anfängern
quelle
Das hat bei mir funktioniert:
komplette div:
quelle
ng-view
undng-inclue
auf demselben Element; Der src (siehe templateUrl ) sollte in Ihrem Router konfiguriert sein.someVar + 'some string'
Versuche dies
quelle
Beim ng-build tritt der Fehler Datei nicht gefunden (404) auf. Wir können also den folgenden Code verwenden
anstelle von,
quelle