【发布时间】:2013-04-05 03:24:06
【问题描述】:
如何在 angularJS 中有条件地执行 ng-include?p>
例如,如果变量x 设置为true,我只想包含一些内容。
<div ng-include="/partial.html"></div>
【问题讨论】:
标签: angularjs angularjs-ng-include
如何在 angularJS 中有条件地执行 ng-include?p>
例如,如果变量x 设置为true,我只想包含一些内容。
<div ng-include="/partial.html"></div>
【问题讨论】:
标签: angularjs angularjs-ng-include
【讨论】:
我遇到了类似的问题,也许这个发现可以帮助别人。我必须在点击链接时显示不同的部分,但 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>
【讨论】:
其中一个答案的可读性更高的版本。加上将 ng-include 设置为 null 会删除元素 - 就像 ng-if。
<div ng-include="x ? 'true-partial.html' : null"></div>
【讨论】:
如果条件足够简单,也可以直接将条件逻辑放在ng-include表达式中:
<div ng-include="x && 'true-partial.html' || 'false-partial.html'"></div>
请注意,表达式x 不在单引号中,因此需要计算。详情请见http://plnkr.co/edit/4fvNDa6Gm3dbVLgsAZrA。
【讨论】:
你也可以这样做
<div ng-include="getInclude()"></div>
在你的控制器中
$scope.getInclude = function(){
if(x){
return "partial.html";
}
return "";
}
【讨论】:
ng-switch 标记的答案对我不起作用。