Take the 2-minute tour ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.

I have a simple AngularJS app that renders a parent element containing some nested elements from a template using ng-bind and ng-repeat. I would like to grab the HTML (innerHtml) of the generated element (as a string) for usage in a different application (where it is to be used as static HTML, outside the context of AngularJS).

This is easy enough to do by using jQuery('#parent-element').html(). The problem with this approach is that the HTML string contains Angular attributes (for example ng-bind) as well as Angular generated comments (from ng-repeat) and classes (such as ng-scope).

I can probably come up with some regular expression to clean up all of these from the string directly, but I would love to know if there is a cleaner way to do this.

So, is there a more "Angular" way to either prevent the attributes/classes/comments from being generated or to extract a clean version of the source HTML of the generated elements?

share|improve this question
    
First of all, you don't parse HTML with regexes. Especially not in JavaScript. Is this something that has to be done automatically? Since you're building a new project, why not copy the HTML and just remove the angular code, yourself? –  Cerbrus Sep 22 '14 at 10:22
    
Thanks for the comment. I'm not sure I understand your comment re parsing the HTML. This has to be done automatically. It's not a single time conversion –  odedbd Sep 22 '14 at 10:28

1 Answer 1

If you don't have a very large number of ng- attributes, you could try something like this:

var div = $("#mydiv");
div.removeAttr("ng-repeat").removeAttr("ng-bind")....

If you have a large number of them, see Get all Attributes from a HTML element with Javascript/jQuery and you could add a method

div.removeAllAttr("ng-")
share|improve this answer
    
Thanks for the suggestion. I would still have to deal with ng generated classes and comment tags. –  odedbd Sep 22 '14 at 12:01
    
Are you looking for an angular way of removing them? $(...).angular.removeAttr(); ? –  artm Sep 22 '14 at 12:02
    
Thanks, but I must be missing something. I mean that angular generates comments, such as "<!-- ngRepeat: item in items -->", which I need to clean up as well –  odedbd Sep 22 '14 at 12:48
    
Ah, ok, didn't think about those. Not sure what you can do about them but like Cerbrus said don't use regex stackoverflow.com/questions/1732348/… –  artm Sep 22 '14 at 12:52

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.