Conditionally adding data-attribute in Angular directive template

前端 未结 3 1470
心在旅途
心在旅途 2020-12-07 18:50

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 vari

相关标签:
3条回答
  • 2020-12-07 18:51

    <span ng-attr-data-toggle="{{isTrue && 'dropdown' || undefined }}"></span>

    will produce when isTrue=true : <span data-toggle="dropdown"></span>

    and when isTrue=false : <span></span>

    0 讨论(0)
  • 2020-12-07 19:07

    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.

    0 讨论(0)
  • 2020-12-07 19:10

    At the moment, there is no angular directive that allows you to remove or add an attribute conditionally. You can do ng-switch around the span, one with that attr and another one without it.

    <div ng-switch on="condition">
    <span data-toggle="dropdown" ng-switch-when="value"></span>
    <span ng-switch-default></span>
    </div>
    

    or

    <span data-toggle="dropdown" ng-if="expression"></span>
    <span ng-if="!expression"></span>
    

    You can also create a directive for that same purpose (adding/removing attrs conditionally) but that would be a bit more complicated.

    Additionally if what you want is manage the scope variable inside the directive you can pass it as another attribute.

    Example:

    <span data-toggle="dropdown" when="isDropDown"></span>
    
    0 讨论(0)
提交回复
热议问题