Компиляция bs-popover в элемент div программно - PullRequest
0 голосов
/ 27 августа 2018

Есть ли шанс, что я смогу скомпилировать bs-popover элемент в div, который я создаю в angularjs в коде, а затем добавить его в DOM, чтобы мой поповер работал?

menu.setAttribute('bs-popover',null);

Так что в принципе я бы хотел, чтобы это bs-popover было скомпилировано в мой элемент меню, который создан таким образом

const menu = document.createElement('div'); 
menu.className += 'layout-row layout-align-center-center containerTrigger';
menu.setAttribute("id", "openMenuTrigger");
menu.setAttribute("data-content", "null");
menu.setAttribute("data-template-url", "app/main/rgc/project/components/project-details/general-info/status-menu.html");
menu.setAttribute("data-animation", "am-flip-x");
menu.setAttribute("data-auto-close", "1");
menu.setAttribute('bs-popover',null);

rightSideContainer.appendChild(menu);

Я могу добавить эти атрибуты в HTML, но правда в том, что моя логика совершенно другая, и я должен создать ее в коде. Какие-нибудь мысли?

1 Ответ

0 голосов
/ 27 августа 2018

В этом отношении вы можете перекомпилировать эту часть шаблона с помощью службы $compile, и она будет интерпретировать добавленные вами атрибуты, добавляя поведение директивы bs-popover к вашему новому элементу.

Сначала добавьте сервис $compile в ваш компонент. Во-вторых, вызовите функцию компиляции перед добавлением элемента в dom и, наконец, вы можете добавить его в целевой контейнер.

const menu = document.createElement('div');

// ...

menu.setAttribute('bs-popover',null);    

$compile(rightSideContainer)(scope);

rightSideContainer.appendChild(menu);
...