Bootstrap-modal 中加载的内容(带有控制器等)根本无法被 AngularJS 识别

Content (with Controller, etc) loaded inside Bootstrap-modal is not being recognized by AngularJS at all

我有一个遗留应用程序正在使用 Bootstrap 模态插件 (v3) 从服务器加载内容。在这些页面之一中,有一个带有中继器的 angular 控制器。

看起来当通过 Bootstrap 模态数据切换加载此内容时,AngularJS 根本没有绑定此内容。它什么也没做,我猜 ANgular 甚至不知道 DOM 改变了?但是,如何在显示模式后强制执行此“编译”?这种加载内容的方式在这个应用程序中无处不在,因此使用 AngularJS 本身“正确”启动弹出窗口的主要重构不是一个选项。

对于遇到此问题的其他人,解决方案是有效地编译加载模式的内容。然后在显示模式后将范围应用于元素(不确定它如何处理延迟,但解决方法是在模式内容本身内准备好文档时调用它):

mainApp.controller("mainAppController", function mainAppController($scope, $http, $compile) {
  $scope.reinitializeModalContent = function(modalId) {
    let modalDom = angular.element(modalId);
    var linkFn = $compile(modalDom);
    var element = linkFn($scope);
  }
});

加载时的预期回调:

$("#myModal").on("shown.bs.modal", function() { 
     angular.element("#mainAppController").scope().reinitializeModalContent("#myModal");
})

有关 $compile 函数的更多文档,请参阅:https://docs.angularjs.org/guide/compiler