J'essaie d'inclure un extrait HTML à l'intérieur d'un ng-repeat
, mais je ne parviens pas à faire en sorte que l'inclusion fonctionne. Il semble que la syntaxe actuelle de ng-include
soit différente de ce qu'elle était auparavant: je vois de nombreux exemples utilisant
<div ng-include src="path/file.html"></div>
Mais dans les documents officiels , il est dit d'utiliser
<div ng-include="path/file.html"></div>
Mais en bas de la page, il apparaît comme
<div ng-include src="path/file.html"></div>
Quoi qu'il en soit, j'ai essayé
<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>
Mon extrait de code n'est pas beaucoup de code, mais il se passe beaucoup de choses; J'ai lu dans Dynamically load template insideng-repeat
que cela pouvait causer un problème, j'ai donc remplacé le contenu de sidepanel.html
par juste le mot foo
, et toujours rien.
J'ai également essayé de déclarer le modèle directement dans la page comme ceci:
<script type="text/ng-template" id="tmpl">
foo
</script>
Et en parcourant toutes les variantes de ng-include
référencement des scripts id
, et toujours rien.
Ma page en avait beaucoup plus, mais maintenant je l'ai réduite à ceci:
<!-- 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>
L'en-tête s'affiche, mais pas mon modèle. Je ne reçois aucune erreur dans la console ou dans Node, et si je clique sur le lien dans les src="views/sidepanel.html"
outils de développement, cela m'amène à mon modèle (et s'affiche foo
).
OU
OU
Points à retenir:
-> Pas d'espaces dans src
-> N'oubliez pas d'utiliser un guillemet simple en guillemet double pour src
la source
ng-include="'...'"
syntaxe est définitivement meilleure.Pour ces problèmes, il est important de savoir que ng-include nécessite que le chemin de l'URL provienne du répertoire racine de l'application et non du même répertoire où réside le partial.html. (alors que partial.html est le fichier de vue dans lequel la balise de balisage en ligne ng-include peut être trouvée).
Par exemple:
la source
add-more.html
trouvait dans le même répertoire queapp.html
. Dans ma réponse,views/
est dans le même répertoire queapp.html
.Pour ceux qui recherchent la solution la plus courte de "rendu d'article" à partir d'un partiel, donc un combo de ng-repeat et ng-include :
<div ng-repeat="item in items" ng-include src="'views/partials/item.html'" />
En fait, si vous l'utilisez comme ça pour un répéteur, cela fonctionnera, mais pas pour 2 d'entre eux! Angular (v1.2.16) va paniquer pour une raison quelconque si vous en avez 2 l'un après l'autre, il est donc plus sûr de fermer le div de la manière pré-xhtml:
<div ng-repeat="item in items" ng-include src="'views/partials/item.html'"></div>
la source
<tbody ng-repeat="item in vm.items" ng-include="vm.searchTemplateBodyUrl" ng-cloak>
. Merci!Peut-être que cela aidera les débutants
la source
Cela a fonctionné pour moi:
div complète:
la source
ng-view
etng-inclue
sur le même élément; le src (voir templateUrl ) doit être configuré dans votre routeur.someVar + 'some string'
essaye ça
la source
Sur ng-build, une erreur de fichier introuvable (404) se produit. Nous pouvons donc utiliser le code ci-dessous
au lieu de,
la source