Javascript 如何在引导后激活新的角度控制器
我有一个角度应用程序,它使用带有Javascript 如何在引导后激活新的角度控制器,javascript,jquery,angularjs,twitter-bootstrap,angular-controller,Javascript,Jquery,Angularjs,Twitter Bootstrap,Angular Controller,我有一个角度应用程序,它使用带有ngapp属性的自动引导。随后,我从HTML模板在引导模式对话框中添加DOM子树,如下所示: <!DOCTYPE html> <html ng-app="Foo"> <head> <link href="lib/bootstrap/css/bootstrap.min.css" rel="stylesheet" media="screen" /> </head> <body>
ngapp
属性的自动引导。随后,我从HTML模板在引导模式对话框中添加DOM子树,如下所示:
<!DOCTYPE html>
<html ng-app="Foo">
<head>
<link href="lib/bootstrap/css/bootstrap.min.css" rel="stylesheet" media="screen" />
</head>
<body>
<a href="template.html" data-toggle="modal" data-target="#modal">Modal</a>
<div class="modal fade" id="modal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
</div>
</div>
</div>
<script src="lib/jquery/jquery.js"></script>
<script src="lib/bootstrap/js/bootstrap.js"></script>
<script src="lib/angular.js/angular.js"></script>
</body>
</html>
<div ng-controller="ViewModalController">
</div>
控制器定期在应用程序中注册
但是,正如我猜想的那样,控制器在加载模式后没有绑定,因为在引导期间,ng控制器
div不可用
我怎样才能让Angular在装货时把它捡起来?是的,你说得对。这不起作用,因为它在引导时不在那里,并且您正在使用jQuery加载新模板,Angular没有为其编译模板 为了使事情顺利进行,您应该像这样编译新添加的HTML(在一个控制器中执行此操作并注入
$compile
):
请参见此处的工作示例:
重要的
用于加载模板的远程选项已被弃用,并在引导4中删除。最好不要用它
此外,Angular的UI团队已经为Bootstrap的Javascript功能编写了本机Angular代码,因此在与Angular一起使用时,您不需要jQuery和Bootstrap.js
文件
签出是否使用jQuery加载该模板?可能。这是引导中的内部魔法。哦,是的!对的看看我的答案。谢谢你详尽的回答!工作起来很有魅力,但现在我选择了有棱角的UI。
$("#modal").on("shown.bs.modal", function() {
var $modal = angular.element(document.getElementById('modal'));
$compile($modal.contents())($scope);
});