运行 angular 影子内的应用程序 dom

Running angular app inside shadow dom

我正在开发一个应用程序,我必须在当前页面中加载其他 angular(1.x) 应用程序(根据项目要求)。我正在尝试使用 shadow DOM 概念来实现它(这可以使用 iframe 来完成,但我正在寻找更好的方法)。我试过下面的代码:

 var templateUrl = "angular-app.html",
 templateReceivedCallback = function (response) {
      var templateHolder = $("#template-holder"),
          div = document.getElementById('template-holder'),
          shadowRoot = div.attachShadow({
              mode: 'open'
           });
       shadowRoot.innerHTML = response;
     };
 $.get(templateUrl, templateReceivedCallback);

我希望 angular 应用程序应该加载到模板持有者元素中:

 <div id="template-holder"></div>

另一个应用程序正在我提到的 div 中加载,但表达式未按预期编译。示例 - Angular 具有变量 this.greeting = "Welcome!" 的应用程序,我期待这个:

 Welcome!

但它呈现为:

 {{greeting}}

有没有更好的方法来实现这个?如果是,请与我分享 运行 示例。

谢谢。

我认为这是不可能的,因为 Angular 解析引擎不会查看 Shadow DOM 内部。

作为解决方法,您可以将 {{greeting}} 放在正常的 DOM 中。

如果您想使用 Shadow DOM,您将始终可以通过 访问它。