2015-03-10 2 views
1

В некоторой степени новичок в AngularJS, и у меня есть вопрос относительно приложения AngularJS и всплывающее окно, которое не использует Angular.Обмен переменной между AngularJS и всплывающим окном non-AngularJS

Например: Угловое приложение содержит директиву, которая открывает всплывающее окно, разделяя некоторые переменные с привязкой в ​​URL-адресе в качестве параметров. Всплывающее окно содержит некоторые классы Prototype, которые манипулируют данными, и возвращает объект, который требует приложение AngularJS. Я имею минимальный контроль над прототипом JS, поскольку этот код несколько устарел. Я попытался выбрать элемент в угловом приложении из всплывающего окна через jQuery, однако это не похоже на правильный подход для решения этой проблемы. Как вы делитесь данными между всплывающим окном без AngularJS и приложением AngularJS?

ответ

0

Вы можете оставить сообщение на «новичок» (окно, которое открыло всплывающее окно) из вашего всплывающего окна, используя что-то вроде этого в коде Popup в:

window.opener.postMessage(yourDataObject, 'https://www.yourdomain.com') 

Будьте строг со вторым параметром и только позволяет ваш домен. Никогда не используйте «*», как если бы ваши данные были (или становятся) чувствительными, каждый мог открыть всплывающее окно со своего веб-сайта и получить эту информацию.

Затем в AngularJS приложение (открывалка), добавьте слушателя:

window.addEventListener("message", yourListenerFunction, useCapture) 

знать, если useCapture должно быть истинным или ложным, прочитать Unable to understand useCapture attribute in addEventListener и посмотреть, что лучше для вас в зависимости от того, когда вы хотите, чтобы захватить событие.

Younes for Wishtack

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