Comment puis-je faire le ng-include conditionnellement dans angularJS?
Par exemple, je veux seulement inclure quelque chose si, la variable x
est définie sur true
.
<div ng-include="/partial.html"></div>
Comment puis-je faire le ng-include conditionnellement dans angularJS?
Par exemple, je veux seulement inclure quelque chose si, la variable x
est définie sur true
.
<div ng-include="/partial.html"></div>
Réponses:
Si vous utilisez Angular v1.1.5 ou version ultérieure, vous pouvez également utiliser ng-if :
<div ng-if="x" ng-include="'/partial.html'"></div>
Si vous avez une version plus ancienne:
Utilisez ng-switch :
<div ng-switch on="x">
<div ng-switch-when="true" ng-include="'/partial.html'"></div>
</div>
Tu pourrais aussi faire
<div ng-include="getInclude()"></div>
Dans votre contrôleur
$scope.getInclude = function(){
if(x){
return "partial.html";
}
return "";
}
ng-switch
réponse marquée n'a pas fonctionné pour moi.
Une version un peu plus lisible de l'une des réponses. Réglage plus ng-include
pour null
Retire l'élément - comme ng-if
.
<div ng-include="x ? 'true-partial.html' : null"></div>
Si la condition est assez simple, vous pouvez également placer la logique conditionnelle directement dans l'expression ng-include:
<div ng-include="x && 'true-partial.html' || 'false-partial.html'"></div>
Notez que l'expression x
n'est pas entre guillemets simples et donc évaluée. Voir http://plnkr.co/edit/4fvNDa6Gm3dbVLgsAZrA pour plus de détails.
J'ai rencontré un problème similaire et peut-être que cette découverte peut aider quelqu'un. Je dois afficher différents partiels en cliquant sur le lien, mais ng-if et ng-switch ne fonctionnaient pas tous les deux dans ce scénario (le code ci-dessous ne fonctionnait pas).
<button type="button" class="btn btn-link" ng-click="viewType('LIST')">List All</button>
<button type="button" class="btn btn-link" ng-click="viewType('EDIT')">Edit</button>
<button type="button" class="btn btn-link" ng-click="viewType('VIEW')">View</button>
<section class="col-md-8 left-col">
<span ng-if = "LIST">
<div data-ng-include="'./app/view/articles/listarticle.html'">
</span>
<span ng-if = "EDIT">
<div data-ng-include="'./app/view/articles/editorarticle.html'">
</span>
</section>
Donc, ce que j'ai fait, c'est, au lieu d'utiliser ng-if, sur un clic de lien, mettez simplement à jour la valeur de partialArticleUrl (qui est un modèle dans le contrôleur) et déclarez ci-dessous le code sur html.
<section class="col-md-8 left-col">
<div data-ng-include="partialArticleUrl">
</section>