I'm working on the template for a directive. If a property in the scope is set to true, data-toggle="dropdown"
should be appended to the element. If the variable is false, this data attribute should not render as an attribute of the element.
For example, if scope variable is true, the template should render:
<span data-toggle="dropdown"></span>
If false, the template should render:
<span></span>
What would the template look like to accomplish this?
For example, I know that I can use ng-class
to conditionally include a class. If I want the template to render this:
<span class="dropdown"></span>
Then my template would look like this:
"<span ng-class="{ 'dropdown': isDropDown }"></span>
If scope variable isDropDown
is false
, then the template will simply render:
<span></span>
So there's a way in a template to conditionally add a class="dropdown"
. Is there a syntax for templates that allows me to conditionally add data-toggle="dropdown"
?
One of the things I've tried for the template is:
"<span data-toggle="{ 'dropdown': isDropDown }"></span>
My thinking with the above template is that if the scope variable isDropDown
is true, the value of data-toggle
will be set to "dropdown". If isDropDown
is false, then the value of data-toggle
would simply be an empty string ""
. That doesn't seem to work though.
Attribute binding syntax resembles property binding, but instead of an element property between brackets, you precede the name of the attribute with the prefix attr , followed by a dot. Then, you set the attribute value with an expression that resolves to a string.
A - ng-bind directive binds the AngularJS Application data to HTML tags.
I think a good way could be to use ng-attr-
followed by the expression you want to evaluate. In your case it would be something like:
<span ng-attr-data-toggle="{{ isValueTrue ? 'toggle' : 'notToggle' }}"></span>
Here's a fiddle with an example.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With