Come posso fare condizionalmente ng-include in angularJS?
Ad esempio, voglio includere qualcosa solo se la variabile x
è impostata su true
.
<div ng-include="/partial.html"></div>
Come posso fare condizionalmente ng-include in angularJS?
Ad esempio, voglio includere qualcosa solo se la variabile x
è impostata su true
.
<div ng-include="/partial.html"></div>
Risposte:
Se stai usando Angular v1.1.5 o successiva, puoi anche usare ng-if :
<div ng-if="x" ng-include="'/partial.html'"></div>
Se hai una versione precedente:
Usa ng-switch :
<div ng-switch on="x">
<div ng-switch-when="true" ng-include="'/partial.html'"></div>
</div>
Potresti anche farlo
<div ng-include="getInclude()"></div>
Nel tuo controller
$scope.getInclude = function(){
if(x){
return "partial.html";
}
return "";
}
ng-switch
risposta contrassegnata non ha funzionato per me.
Versione un po 'più leggibile di una delle risposte. L'impostazione Plus ng-include
per null
rimuovere l'elemento, proprio come ng-if
.
<div ng-include="x ? 'true-partial.html' : null"></div>
Se la condizione è abbastanza semplice, potresti anche inserire la logica condizionale direttamente nell'espressione ng-include:
<div ng-include="x && 'true-partial.html' || 'false-partial.html'"></div>
Nota che l'espressione x
non è racchiusa tra virgolette singole e quindi valutata. Vedi http://plnkr.co/edit/4fvNDa6Gm3dbVLgsAZrA per maggiori dettagli.
Ho riscontrato un problema simile e potrebbe essere che questa scoperta possa aiutare qualcuno. Devo visualizzare diversi parziali al clic del collegamento, ma ng-if e ng-switch non funzionavano entrambi in questo scenario (il codice sotto non funzionava).
<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>
Quindi quello che ho fatto è, invece di usare ng-if, al clic del collegamento aggiorna semplicemente il valore di partialArticleUrl (che è un modello nel controller) e dichiara il codice sottostante su html.
<section class="col-md-8 left-col">
<div data-ng-include="partialArticleUrl">
</section>