Angular-show обрабатывает неопределенные переменные

0

У меня есть две директивы, которые отображаются на основе настраиваемой переменной.

Это визуально работало, но во время приемочных испытаний я нашел проблему. Я попытался утверждать, что если <settingElement> не был нажат (настройка var selected), ни одна директива не отображается. Тест прошел для <directiveA> но не прошел для <directiveB> оставив меня немного смущенным.

Ниже приведен пример кода:

<settingElement ng-click="selected = trueOrFalse()"></settingElement>

<directiveA ng-show="selected"></directiveA>
<directiveB ng-show="!selected"></directiveB>
  • 0
    Можете ли вы показать нам все свои директивы код. Или еще лучше дать нам поршень?
  • 0
    Я думаю, это потому, что когда settingElement не нажимается selected = undefined и внутри directiveB B выражение ng-show получает true, потому что в JavaScript !undefined = true
Показать ещё 2 комментария
Теги:
ng-show
angularjs-ng-show

3 ответа

0
Лучший ответ

Успех! По крайней мере, любопытно, визуально код работает, поэтому вместо тестирования на isDisplayed я просто утверждал, что высота и ширина равны 0... не идеальны, но работают.

0

Вероятно, это связано с выражением запуска с неопределенными значениями

попробуйте с ng-if ="selected" or ng-show="selected==true"

0

Вероятно, лучшим способом сделать это было бы определение selected в родительском элементе обоих элементов, например:

<div ng-init="selected = false;">
    <settingElement ng-click="selected = true"></settingElement>

    <directiveA ng-show="selected"></directiveA>
    <directiveB ng-show="!selected"></directiveB>
</div>

Другим "более коротким временным решением" будет

<settingElement ng-click="selected = true"></settingElement>

<directiveA ng-show="!!selected"></directiveA>
<directiveB ng-show="!selected"></directiveB>
  • 0
    Извините, должно было быть более ясным, щелчок на settingElement не гарантирует определенного результата, поэтому никаких предположений по этому поводу не может быть сделано.
  • 0
    Похоже, довольно плохой дизайн для меня
Показать ещё 1 комментарий

Ещё вопросы

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