有条件的ng-include in angularjs

Jus*_*cha 93 angularjs angularjs-ng-include

如何在angularJS中有条件地执行ng-include?

例如,我只想包含一些东西,如果变量x设置为true.

<div ng-include="/partial.html"></div>
Run Code Online (Sandbox Code Playgroud)

Mar*_*cok 119

如果您使用的是Angular v1.1.5或更高版本,则还可以使用ng-if:

<div ng-if="x" ng-include="'/partial.html'"></div>
Run Code Online (Sandbox Code Playgroud)

如果您有任何旧版本:

使用ng-switch:

<div ng-switch on="x">
   <div ng-switch-when="true" ng-include="'/partial.html'"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

小提琴

  • 这在1.2.0rc1中似乎不再起作用 (12认同)
  • 见https://github.com/angular/angular.js/issues/3627#issuecomment-23539882; 在当前版本(1.2.*)中,您不能在同一元素上使用ng-switch和ng-include,因此您需要以下内容:<div ng-switch-when ="true"> <div ng-include ="' ""> </ DIV> <// DIV> (7认同)
  • 是的,它目前已在1.2中破解:https://github.com/angular/angular.js/issues/3627 (5认同)
  • 该问题已在v1.2.2-23ba287 http://code.angularjs.org/snapshot/angular.js中修复 (2认同)

gan*_*raj 68

你也可以这样做

<div ng-include="getInclude()"></div>
Run Code Online (Sandbox Code Playgroud)

在你的控制器中

$scope.getInclude = function(){
    if(x){
        return "partial.html";
    }
    return "";
}
Run Code Online (Sandbox Code Playgroud)

  • imo最好的方式+1 (2认同)

小智 16

其中一个答案的更易读的版本.加上设置ng-includenull删除元素-就像ng-if.

<div ng-include="x ? 'true-partial.html' : null"></div>
Run Code Online (Sandbox Code Playgroud)


dsp*_*ies 11

如果条件足够简单,您还可以将条件逻辑直接放在ng-include表达式中:

<div ng-include="x && 'true-partial.html' || 'false-partial.html'"></div>
Run Code Online (Sandbox Code Playgroud)

请注意,表达式x不是单引号,因此会进行求值.有关详细信息,请参阅http://plnkr.co/edit/4fvNDa6Gm3dbVLgsAZrA.