如何动态创建ngInclude指令?

时间:2015-12-19 03:48:12

标签: javascript angularjs angularjs-directive

当我把它放在我的HTML中时,它运行正常:

<div ng-include="'my-template.html'"></div>

但是当我尝试使用jQuery动态创建ngInclude指令时(在DOM准备好之后),它不起作用:

$(function() {
  var el = document.createElement('div');
  el.setAttribute('ng-include', "'my-template.html'");
  $('.container').replaceWith(el);
});

该元素确实使用预期的模板插入到DOM中,但它不会被解释为AngularJS代码。控制台没有错误。

我错过了什么?

1 个答案:

答案 0 :(得分:2)

您需要compile HTML

我不确定您的文件中的语法是什么样的(无论您是否使用requireJS),但它应该类似于使用范围编译新元素。

angular.element('[ng-app]')
       .injector()
       .invoke(['$compile', function ($compile) {
                    var $scope = angular.element(el).scope();
                    $compile(el)($scope);
                    $scope.$apply();
                }]);