2016-10-10 35 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 

這是一個有點過於簡單,因爲您可能還需要刪除評論說,角用途用作佔位符,以便作爲概念僅提供