angularJS of-attr- выражение

0

привет, я работаю над навигационным направлением. если есть какие-либо дочерние записи, я должен добавить атрибут "uib-dropdown",

<li ng-attr-uib-dropdown="{{!!tree[$index].children ? '' : undefined }}" ng-repeat="nav in tree" ng-class="{ 'active' : isActive(nav.path) }">

переменная "!! tree [$ index].children" вернет true или false. Я за google сейчас с 2 часов, но я не могу понять, как использовать это выражение с правильной настройкой ng-attr.

потому что теперь он добавляет uib-dropdown для каждого li. не имеет значения, верно это или ложно.

Я надеюсь, что кто-то может мне помочь. благодаря

Теги:
angularjs-directive

1 ответ

0

Поскольку наш ответ для tree[$index].children может быть правдивым, если у tree[$index].children есть ответ, он будет правдой, если он пуст или не определен, тогда он будет false/falsey. Нет необходимости в !! или тернарный оператор.

<li ng-attr-uib-dropdown="{{tree[$index].children}}">
Вы также можете использовать || (или оператора), чтобы лучше проиллюстрировать "ложь" неопределенного.
<li ng-attr-uib-dropdown="{{tree[$index].children || undefined}}">


Создал plunkit. Здесь я использовал ng-if если существует массив "еда", то разрешите выпадающее меню. Если вы удалите массив "food", ссылка будет заменена без выпадающего списка.
<a href ng-if="!food">
    Click me, no dropdown, yo!
</a>

<!-- Simple dropdown -->
<span ng-if="food" uib-dropdown on-toggle="toggled(open)">
    <a href id="simple-dropdown" uib-dropdown-toggle>
        Click me for a dropdown, yo!
    </a>
    <ul class="dropdown-menu" uib-dropdown-menu aria-labelledby="simple-dropdown">
        <li ng-repeat="choice in items">
            <a href>{{choice}}</a>
        </li>
    </ul>
</span>
  • 0
    Здравствуйте, сначала спасибо за ваш ответ. теперь я понимаю это немного лучше :) Но он все еще не работает: также, если я добавляю переменную области видимости, которая не существует, она все равно отображается и вызывает директиву (могу видеть это, потому что тот автоматически добавляет класс) ng-attr -uib-dropdown = "{{asdasdas}}" есть идеи, что тут еще может быть не так?
  • 0
    @ Патрик - я добавил новое решение накануне. Не будет ng-if работать на вас?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню