2016-10-10 38 views
0

我的目标是生成一个HTML字符串,该字符串将被保存在数据库中并可显示在其他角度应用程序中。如何删除编译模板缓存时生成的ng-repeats和ng-includes

我能够得到该字符串,但任何ng-repeats和ng-includes仍然是该标记的一部分,所以当我尝试显示该HTML时,它本质上试图再次编译它,并且因为在ng-repeat或ng-bind最终不会显示这些部分。

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

+0

没有“编译程原生方式“角色绑定到**当前**应用程序;这将打破双向绑定,这是角度工作的基础。你可以设计一个去除所有角元素的函数,但是这需要对角度属性的所有可能组合有相当多的了解,这不是很有效。 – Claies

回答

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 

这是一个有点过于简单,因为您可能还需要删除评论说,角用途用作占位符,以便作为概念仅提供