diff --git a/public/index.html b/public/index.html index d8b0517..e769eaa 100644 --- a/public/index.html +++ b/public/index.html @@ -43,8 +43,8 @@ - + diff --git a/public/script/ng-pdfviewer.min.js b/public/script/ng-pdfviewer.min.js index b5da0ef..775e5ff 100644 --- a/public/script/ng-pdfviewer.min.js +++ b/public/script/ng-pdfviewer.min.js @@ -8,6 +8,50 @@ angular .module("ngPDFViewer", []) + .factory("RecursionHelper", [ + "$compile", + function($compile) { + return { + /** + * 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 + if (angular.isFunction(link)) { + 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 + if (!compiledContents) { + compiledContents = $compile(contents); + } + // Re-add the compiled contents to the element + compiledContents(scope, function(clone) { + element.append(clone); + }); + + // Call the post-linking function, if any + if (link && link.post) { + link.post.apply(null, arguments); + } + }, + }; + }, + }; + }, + ]) .directive("pdfpageviewer", [ function() { return {