-3

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

В любом случае, проблема заключается в том, что у меня есть экземпляр материала с угловыми картами google в моем основном контроллере, и у меня есть тег внутри этого. У меня также есть директива, которая захватывает пользовательские входы и использует их для заполнения списка в главном контроллере, чтобы тег выполнял свою работу. Я передаю объект и функцию от основного контроллера в область выделения директивы.

Странно то, что в моих директивах я привязал эту функцию к нажатию кнопки для формы, и по какой-то причине для получения маркера требуется 2 щелчка. Функция запускает первый клик, имеет все правильные значения и все, но маркер не появляется. Еще один странный, который я проверил, просто вызывал метод дважды подряд за один клик, который не работал (по-прежнему требуется 2 нажатия кнопок).

Функция изменяет массив в главном контроллере (у меня такое чувство, что это корень проблемы), который используется тегом в качестве списка маркеров. Любые идеи о том, почему это может произойти? Если это не похоже на явное недоразумение Angular scoping, я могу опубликовать код.

+4

Моя первая мысль - ваши данные происходят за пределами цикла дайджеста. И если это так, то добавление '$ scope. $ Digest()' после обновления ваших данных может решить проблему (или дать вам консольную ошибку). Однако код проводки поможет. –

+0

Вот и все! Если вы поместите свой комментарий в качестве ответа, я буду отмечать его как таковой. Мне любопытно, почему мне нужно заставить дайджест в этой ситуации, но я думаю, что если я изучу этот цикл немного, я, вероятно, смогу это выяснить. – Mike

+0

Если его в обратном вызове, привязка в контроллере или тайм-аут/интервал (между прочим), он выводит его за пределы цикла дайджеста и требует принудительного пересчета. –

ответ

2

Моя первая мысль - ваши данные происходят за пределами цикла дайджеста. И если это так, добавьте $ scope. $ Digest() после обновления ваших данных может решить проблему (или дать вам консольную ошибку).

+0

@NicholkasThomas, где именно ** $ scope. $ Digest() ** должен быть близок? В моем случае у меня есть ** Modal Directive **, которая открывает модальные данные с переданными данными (данные из модальной директивы). И ** директива ** будет открыта или закрыта на основе функции ** кнопки щелчка **, (** т.е.: нажатие кнопки() позаботится о том, чтобы установить начальное значение модальности для открытия или закрытия **). Таким образом, я поместил ** $ scope. $ Digest() ** как последний оператор click(), но после этого я получаю сообщение об ошибке **, которое уже применяется ** ... Просьба помочь. –

Смежные вопросы