如何删除编译模板缓存时生成的ng-repeats和ng-includes

时间:2016-10-10 18:11:08

标签: angularjs

我的目标是生成一个HTML字符串,该字符串将保存在数据库中,并可以在其他角度应用程序中显示。

我能够获得该字符串,但任何ng-repeats和ng-includes仍然是该标记的一部分,因此当我尝试显示该HTML时,它基本上尝试再次编译它,因为ng中没有值-repeat或ng-bind它最终没有显示那些碎片。

如果我可以摆脱ng-binding和ng-repeats,或者可能告诉Angular忽略我正在显示它们的那边的ng-repeats / ng-includes,那么标记就非常完美了。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您可以通过将html附加到临时元素中来清除它。然后操纵那些删除类和属性的元素。完成后返回innerHTML

var $el = angular.element('<div>').append(yourHtmlString);
$el.find($el[0].querySelectorAll('[ng-repeat]').removeAttr('ng-repeat');
var result= $el.html();// raw non angular html

这有点过于简单,因为您可能还需要删除角度用作占位符的注释,因此仅作为概念提供