Я занимаюсь разработкой системы поддержки. Когда сотрудник службы поддержки нажимает на значок службы поддержки, открывается экран поддержки ( staff-room.html ), в котором содержится список клиентов, ожидающих запроса на участие. Ниже приведен фрагмент кода из вышеуказанного файла
<md-list-item ng-repeat="client in clientChannelList | filter: searchText">
<div class="channel" layout="row" layout-align="center center">
<div class="md-list-item-text" layout="column" layout-align="center start" flex>
<h3 class="name">{{ client.senderName}}</h3>
<span class="site-name">{{ client.siteName}}</span>
</div>
</div>
<button chat-popup-box>Attend</button>
</md-list-item>
<div flex layout="column">
<md-toolbar class="background-transparent">
<div class="md-toolbar-tools" layout="row"></div>
</md-toolbar>
<md-divider></md-divider>
<div id="chat-popup"></div>
<md-divider></md-divider>
</div>
У меня есть директива атрибута chat-popup-box
( присутствует в элементе кнопки ), которая инициализируется при нажатии кнопки. Внутри этой директивы я создаю html-элемент, который создает всплывающее окно чата, и добавляю его с элементом, имеющим id chat-popup в родительском элементе ( staff-room.html ).
var htmlelement = `<div class="popup-box chat-popup">Some stuff</div>`
var compiledElement = $compile(htmlelement)($scope);
var pageElement = angular.element(document.getElementById("chat-popup"));
pageElement.append(compiledElement);
Теперь проблема в том, что всякий раз, когда я меняю состояние (переходя к любому другому модулю) и возвращаюсь, я теряю HTML-код, добавленный в <div id="chat-popup"></div>
, из DOM. Следовательно, я теряю всплывающее окно чата.
Так что до изменения состояния представления DOM было что-то вроде этого
<div id="chat-popup">
<div class="popup-box chat-popup">Some stuff</div>
</div>
Но после изменения состояния и возвращения в то же состояние DOM выглядит следующим образом
<div id="chat-popup"></div>
Во время отладки я обнаружил, что директива не уничтожается, поскольку даже после изменения состояния поток шел внутри директивы chat-popup-box
, но добавленный мною HTML удаляется из DOM. Есть ли способ предотвратить это?