我正在构建一个依赖于 Angular 的小部件以及一个小部件构建器工具。构建器使用ngApp
附加到html
文档标签的 Angular。
当我在小部件构建器中加载小部件时,出现以下错误:
Error: [ng:btstrpd] App Already Bootstrapped with this Element '<div class="company-widget" id="widget-app" data-company="demoCorp">'
这是引导函数:
angular.bootstrap('#widget-app', ["myWidget"]);
出于所有意图和目的,应用程序的其余部分myWidget
是控制器和服务的标准组合。
我一直在关注这篇关于如何在一个页面中允许多个指令的博客文章ngApp
,但是直到我设置了这个东西之后我才意识到它在博客文章的末尾说你不能嵌套应用程序,这就是这里发生的事情,以及在少数使用此小部件的网站上可能发生的事情。
我无法重新设计小部件构建器,我可以合理地假设对于嵌入小部件的任何 Angular 站点,主机站点将附加ngApp
到html
标签。
我的问题是,有没有办法绕过这个限制,即使它是一个 hacky 解决方案?是否可以检查页面是否已经有一个应用程序并将该myWidget
应用程序作为依赖项注入到主机应用程序中?