Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
module.factory('RecursionHelper', ['$compile', function($compile){
return {
* Author: Mark Lagendijk from Stack Overflow
* Reference:
* Manually compiles the element, fixing the recursion loop.
* @param element
* @param [link] A post-link function, or an object with function(s) registered via pre and post properties.
* @returns An object containing the linking functions.
compile: function(element, link){
// Normalize the link parameter
link = { post: link };
// Break the recursion loop by removing the contents
var contents = element.contents().remove();
var compiledContents;
return {
pre: (link && link.pre) ? link.pre : null,
* Compiles and re-adds the contents
post: function(scope, element){
// Compile the contents
compiledContents = $compile(contents);
// Re-add the compiled contents to the element
compiledContents(scope, function(clone){
// Call the post-linking function, if any
if(link &&{, arguments);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.