如何在angularJS中有条件地执行ng-include? p>
例如,如果变量x
设置为true
,我只想包含一些内容。
<div ng-include="/partial.html"></div>
答案 0 :(得分:118)
如果您使用的是Angular v1.1.5或更高版本,您还可以使用ng-if:
<div ng-if="x" ng-include="'/partial.html'"></div>
如果您有任何旧版本:
使用ng-switch:
<div ng-switch on="x">
<div ng-switch-when="true" ng-include="'/partial.html'"></div>
</div>
答案 1 :(得分:66)
您也可以
<div ng-include="getInclude()"></div>
在您的控制器中
$scope.getInclude = function(){
if(x){
return "partial.html";
}
return "";
}
答案 2 :(得分:15)
其中一个答案的可读性更强一点。另外,将ng-include
设置为null
会删除该元素 - 就像ng-if
。
<div ng-include="x ? 'true-partial.html' : null"></div>
答案 3 :(得分:11)
如果条件足够简单,您还可以将条件逻辑直接放在ng-include表达式中:
<div ng-include="x && 'true-partial.html' || 'false-partial.html'"></div>
请注意,表达式x
不是单引号,因此会进行评估。有关详细信息,请参阅http://plnkr.co/edit/4fvNDa6Gm3dbVLgsAZrA。
答案 4 :(得分:2)
我遇到了类似的问题,可能这个发现可以帮助某人。我必须在点击链接时显示不同的部分内容,但ng-if和ng-switch在这种情况下都不起作用(下面的代码不起作用)。
<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>
所以我所做的是,而不是使用ng-if,点击链接只需更新partialArticleUrl(控制器中的模型)的值,并在html上声明下面的代码。
<section class="col-md-8 left-col">
<div data-ng-include="partialArticleUrl">
</section>