Como posso incluir o ng condicionalmente no angularJS?
Por exemplo, eu só quero incluir algo se a variável x
for definida como true
.
<div ng-include="/partial.html"></div>
Como posso incluir o ng condicionalmente no angularJS?
Por exemplo, eu só quero incluir algo se a variável x
for definida como true
.
<div ng-include="/partial.html"></div>
Respostas:
Se você estiver usando Angular v1.1.5 ou posterior, também pode usar ng-if :
<div ng-if="x" ng-include="'/partial.html'"></div>
Se você tiver alguma versão mais antiga:
Use ng-switch :
<div ng-switch on="x">
<div ng-switch-when="true" ng-include="'/partial.html'"></div>
</div>
Você também poderia fazer
<div ng-include="getInclude()"></div>
Em seu controlador
$scope.getInclude = function(){
if(x){
return "partial.html";
}
return "";
}
ng-switch
resposta marcada não funcionou para mim.
Uma versão um pouco mais legível de uma das respostas. Além disso, a configuração ng-include
para null
remove o elemento - exatamente como ng-if
.
<div ng-include="x ? 'true-partial.html' : null"></div>
Se a condição for simples o suficiente, você também pode colocar a lógica condicional diretamente na expressão ng-include:
<div ng-include="x && 'true-partial.html' || 'false-partial.html'"></div>
Observe que a expressão x
não está entre aspas simples e, portanto, avaliada. Consulte http://plnkr.co/edit/4fvNDa6Gm3dbVLgsAZrA para obter mais detalhes.
Eu encontrei um problema semelhante e pode ser que essa descoberta possa ajudar alguém. Eu tenho que exibir parciais diferentes no clique do link, mas ng-if e ng-switch não estavam funcionando neste cenário (o código abaixo não estava funcionando).
<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>
Então o que fiz foi, em vez de usar ng-if, ao clicar no link, apenas atualizar o valor de partialArticleUrl (que é um modelo no controlador) e declarar o código abaixo em html.
<section class="col-md-8 left-col">
<div data-ng-include="partialArticleUrl">
</section>