我正在创建< row>需要替换的AngularJS指令(在执行之后,< row>标记不能出现在DOM中)与可以包含任何HTML代码的动态模板。
使用replace:true的问题是它不能使用表的标签,并且模板是动态选择的。
使用jQuery的.replaceWith()打破ngRepeats未知的原因。
任何提示?
这是fiddle
解决方法
你的小提琴看起来很基本,但你应该能够使用outerHTML
element[0].outerHTML ='<div>I should not be red</div>';
如果您必须处理ng-repeat,您可以将项目绑定到范围属性,并在您编译的模板中引用它们。一旦编译,你可以使用jQuery replaceWith()
html
<row items="items">***</row>
指示
.directive('row',function ($compile) { return { restrict: 'E',scope: { items: "=" },link: function (scope,element,attrs) { var html ='<div ng-repeat="item in items">I should not be red</div>'; var e =$compile(html)(scope); element.replaceWith(e); } }; });