Условное добавление атрибута данных в шаблон угловой директивы
я работаю над шаблоном для директивы. Если свойство в области имеет значение true, data-toggle="dropdown"
должны быть добавлены к элементу. Если переменная имеет значение false, этот атрибут данных не должен отображаться как атрибут элемента.
например, если переменная scope имеет значение true, шаблон должен отображать:
<span data-toggle="dropdown"></span>
если false, шаблон должен отображать:
<span></span>
как будет выглядеть шаблон для достижения этой цели?
например, я знаю, что могу использовать ng-class
условно включить класс. Если я хочу, чтобы шаблон отображал это:
<span class="dropdown"></span>
затем мой шаблон будет выглядеть так:
"<span ng-class="{ 'dropdown': isDropDown }"></span>
если переменная области isDropDown
и false
, то шаблон будет просто визуализировать:
<span></span>
так что есть способ в шаблоне условно добавить class="dropdown"
. Есть ли синтаксис для шаблонов, который позволяет мне условно добавлять data-toggle="dropdown"
?
одна из вещей, которые я пробовал для шаблона:
"<span data-toggle="{ 'dropdown': isDropDown }"></span>
мое мышление с приведенным выше шаблоном заключается в том, что если переменная scope isDropDown
истинно, то значение data-toggle
будет установлен в "выпадающее меню". Если isDropDown
false, тогда значение data-toggle
будет просто пустой строкой ""
. Это, кажется, не работает, хотя.
3 ответа:
Я думаю, что хороший способ может быть использовать
ng-attr-
затем выражение, которое вы хотите оценить. В вашем случае это будет что-то вроде:<span ng-attr-data-toggle="{{ isValueTrue ? 'toggle' : 'notToggle' }}"></span>
здесь скрипка С примером.
<span ng-attr-data-toggle="{{isTrue && 'dropdown' || undefined }}"></span>
будет производить, когда isTrue=true :
<span data-toggle="dropdown"></span>
и когда isTrue=false :
<span></span>
на данный момент нет угловой директива, которая позволяет удалить или добавить атрибут условно. Вы можете сделать ng-switch вокруг пролета, один с этим attr, а другой без него.
<div ng-switch on="condition"> <span data-toggle="dropdown" ng-switch-when="value"></span> <span ng-switch-default></span> </div>
или
<span data-toggle="dropdown" ng-if="expression"></span> <span ng-if="!expression"></span>
вы также можете создать директиву для той же цели (добавление/удаление attrs условно), но это было бы немного сложнее.
кроме того, если вы хотите управлять scope переменной внутри директивы вы можете передайте его как другой атрибут.
пример:
<span data-toggle="dropdown" when="isDropDown"></span>