以编程方式将bs-popover编译为div元素

时间:2018-08-27 14:08:26

标签: angularjs angularjs-directive angularjs-scope angular-compiler

我是否有可能将我在代码中用angularjs创建的bs-popover元素编译成div,然后将其添加到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 :(得分:1)

为此,您可以使用$compile服务重新编译模板的该部分,它将解释您添加的属性,并将bs-popover指令行为添加到新元素中。

首先,将$compile服务注入到您的组件中。其次,在将元素添加到dom中之前调用compile函数,最后,可以将其附加到目标容器中。

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

// ...

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

$compile(rightSideContainer)(scope);

rightSideContainer.appendChild(menu);