Як я можу зробити ng-include умовно в angularJS?
Наприклад, я хочу лише щось включити, якщо для змінної x
встановлено значення true
.
<div ng-include="/partial.html"></div>
Як я можу зробити ng-include умовно в angularJS?
Наприклад, я хочу лише щось включити, якщо для змінної x
встановлено значення true
.
<div ng-include="/partial.html"></div>
Відповіді:
Якщо ви використовуєте Angular v1.1.5 або новішої версії, ви також можете використовувати ng-if :
<div ng-if="x" ng-include="'/partial.html'"></div>
Якщо у вас є старіша версія:
Використовуйте ng-перемикач :
<div ng-switch on="x">
<div ng-switch-when="true" ng-include="'/partial.html'"></div>
</div>
Ви також можете зробити
<div ng-include="getInclude()"></div>
У вашому контролері
$scope.getInclude = function(){
if(x){
return "partial.html";
}
return "";
}
ng-switch
Відзначено відповідь не працює для мене.
Трохи більш читабельна версія однієї з відповідей. Плюс налаштування 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 .
Я зіткнувся з подібною проблемою і, можливо, ця знахідка може комусь допомогти. Я повинен відображати різні партії при натисканні посилання, але 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, при натисканні посилання просто оновити значення parAArticleUrl (яка є моделлю в контролері) і оголосити нижче код на html.
<section class="col-md-8 left-col">
<div data-ng-include="partialArticleUrl">
</section>