AngularJS ng-click работает только при втором щелчке

Попытка свернуть раскрывающееся меню (выбор языка) на панели навигации мобильной начальной загрузки. При первом щелчке раскрывающееся меню с языками открывается нормально, после изменения языков раскрывающееся меню языков закрывается, но когда я снова пытаюсь изменить язык, мне нужно дважды щелкнуть раскрывающееся меню, чтобы оно открылось. Кто-нибудь может мне с этим помочь?

    <li class = "dropdown" dropdown style = "margin-top: 25%; left: 7.5%;">
            <a href = "#" class = "dropdown-toggle" dropdown-toggle role = "button" ng-click = "visible = true">
                {{vm.languageSel.name}}
                <span class = "caret"></span>
            </a >
            <ul class = "dropdown-menu" ng-show = "visible">
                <li ng-repeat = "lang in vm.languages" ng-click = "$parent.visible = false">
                    <a ng-click = "vm.chgLang($index)">
                        {{lang.name}}
                    </a>
                </li>
            </ul>
        </li>

возможно, это проблема распространения, вы пытались разместить 2 события щелчка в одном и том же месте? <a ng-click = "vm.chgLang($index); $parent.visible = false"> (и удаление его из li)

Kaddath 25.04.2018 16:52

пошел дальше и попробовал, все та же проблема.

tru2793 25.04.2018 16:56

пошел дальше и отредактировал сообщение с более подробной информацией

tru2793 25.04.2018 17:02

что-то еще должно мешать вашему коду, я быстро попробовал ваш код (в тестовом проекте ionic 1 было проще всего с моей текущей настройкой, использует Angular v1.5.3) без изменений, и он работал нормально.

Kaddath 25.04.2018 17:23

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

Kaddath 26.04.2018 11:42

Пошел вперед и сделал это, я думаю, что это проблема с ng-show и ng-show, мешающими раскрывающемуся меню начальной загрузки

tru2793 26.04.2018 17:00
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
6
318
2

Ответы 2

Я думаю, это потому, что visible по умолчанию инициализирован как false. Попробуйте добавить ng-init = "visible = true" в первую директиву li

Все та же проблема

tru2793 25.04.2018 16:45

Я думаю, это из-за $ parent. Можно без него попробовать? Как это:

<li class = "dropdown" dropdown style = "margin-top: 25%; left: 7.5%;">
        <a href = "#" class = "dropdown-toggle" dropdown-toggle role = "button" ng-click = "visible = true">
            {{vm.languageSel.name}}
            <span class = "caret"></span>
        </a >
        <ul class = "dropdown-menu" ng-show = "visible">
            <li ng-repeat = "lang in vm.languages" ng-click = "visible = false">
                <a ng-click = "vm.chgLang($index)">
                    {{lang.name}}
                </a>
            </li>
        </ul>
    </li>

все еще не повезло, было бы полезно опубликовать больше моего кода?

tru2793 25.04.2018 18:11

Другие вопросы по теме