我有一個簡單的AngularJS應用程序,該應用程序使用ng-bind和ng-repeat呈現包含模板中某些嵌套元素的父元素。我想抓取生成的元素的HTML(innerHtml)(作爲字符串),以用於不同的應用程序(在AngularJS的上下文之外將用作靜態HTML)。如何從HTML中刪除angularjs屬性和類?
這很容易通過使用jQuery('#parent-element').html()
來完成。這種方法的問題在於,HTML字符串包含Angular屬性(例如ng-bind)以及Angular生成的註釋(來自ng-repeat)和類(如ng-scope)。
我可能會想出一些正則表達式來直接從字符串中清除所有這些,但我很想知道是否有更乾淨的方法來執行此操作。
那麼,是否有更多的「角」方法來防止生成屬性/類/註釋或提取生成元素的源代碼的乾淨版本?
UPDATE: 對於@蘇哈斯,團結和其他人誰可能會發現這個有用,我結束了使用效果很好足夠我使用區分
var cleaner = angular.element('#dirtier')
.html()
.replace(/<!--[^>]*-->/gi, '')
.replace(/\n/g, '')
.replace(/ng-.+?\b/g, '')
.replace(/ng-.+?=".*?"/g, '')
.replace(/class=""/g, '')
.replace(/\"/g, "\\\"")
.replace(/\s+/g, " ");
首先,你不要用正則表達式解析HTML。尤其不在JavaScript中。 這是必須自動完成的事情嗎?既然你正在構建一個新的項目,爲什麼不復制HTML並自己刪除角碼呢? – Cerbrus 2014-09-22 10:22:37
感謝您的評論。我不確定我是否理解你的評論,然後解析HTML。這必須自動完成。這不是一個單一的時間轉換 – odedbd 2014-09-22 10:28:54
你找到一個方法嗎? – 2015-07-24 12:28:34