(directives, $compileNode, tAttrs,
$rootElement, childTranscludeFn, preLinkFns, postLinkFns, previousCompileContext)
| 7844 | |
| 7845 | |
| 7846 | function compileTemplateUrl(directives, $compileNode, tAttrs, |
| 7847 | $rootElement, childTranscludeFn, preLinkFns, postLinkFns, previousCompileContext) { |
| 7848 | var linkQueue = [], |
| 7849 | afterTemplateNodeLinkFn, |
| 7850 | afterTemplateChildLinkFn, |
| 7851 | beforeTemplateCompileNode = $compileNode[0], |
| 7852 | origAsyncDirective = directives.shift(), |
| 7853 | // The fact that we have to copy and patch the directive seems wrong! |
| 7854 | derivedSyncDirective = extend({}, origAsyncDirective, { |
| 7855 | templateUrl: null, transclude: null, replace: null, $$originalDirective: origAsyncDirective |
| 7856 | }), |
| 7857 | templateUrl = (isFunction(origAsyncDirective.templateUrl)) |
| 7858 | ? origAsyncDirective.templateUrl($compileNode, tAttrs) |
| 7859 | : origAsyncDirective.templateUrl, |
| 7860 | templateNamespace = origAsyncDirective.templateNamespace; |
| 7861 | |
| 7862 | $compileNode.empty(); |
| 7863 | |
| 7864 | $templateRequest($sce.getTrustedResourceUrl(templateUrl)) |
| 7865 | .then(function(content) { |
| 7866 | var compileNode, tempTemplateAttrs, $template, childBoundTranscludeFn; |
| 7867 | |
| 7868 | content = denormalizeTemplate(content); |
| 7869 | |
| 7870 | if (origAsyncDirective.replace) { |
| 7871 | if (jqLiteIsTextNode(content)) { |
| 7872 | $template = []; |
| 7873 | } else { |
| 7874 | $template = removeComments(wrapTemplate(templateNamespace, trim(content))); |
| 7875 | } |
| 7876 | compileNode = $template[0]; |
| 7877 | |
| 7878 | if ($template.length != 1 || compileNode.nodeType !== NODE_TYPE_ELEMENT) { |
| 7879 | throw $compileMinErr('tplrt', |
| 7880 | "Template for directive '{0}' must have exactly one root element. {1}", |
| 7881 | origAsyncDirective.name, templateUrl); |
| 7882 | } |
| 7883 | |
| 7884 | tempTemplateAttrs = {$attr: {}}; |
| 7885 | replaceWith($rootElement, $compileNode, compileNode); |
| 7886 | var templateDirectives = collectDirectives(compileNode, [], tempTemplateAttrs); |
| 7887 | |
| 7888 | if (isObject(origAsyncDirective.scope)) { |
| 7889 | markDirectivesAsIsolate(templateDirectives); |
| 7890 | } |
| 7891 | directives = templateDirectives.concat(directives); |
| 7892 | mergeTemplateAttributes(tAttrs, tempTemplateAttrs); |
| 7893 | } else { |
| 7894 | compileNode = beforeTemplateCompileNode; |
| 7895 | $compileNode.html(content); |
| 7896 | } |
| 7897 | |
| 7898 | directives.unshift(derivedSyncDirective); |
| 7899 | |
| 7900 | afterTemplateNodeLinkFn = applyDirectivesToNode(directives, compileNode, tAttrs, |
| 7901 | childTranscludeFn, $compileNode, origAsyncDirective, preLinkFns, postLinkFns, |
| 7902 | previousCompileContext); |
| 7903 | forEach($rootElement, function(node, i) { |
no test coverage detected