MCPcopy Create free account
hub / github.com/EricSimons/ionic-course / compileTemplateUrl

Function compileTemplateUrl

code/songhop/www/lib/angular/angular.js:7846–7958  ·  view source on GitHub ↗
(directives, $compileNode, tAttrs,
        $rootElement, childTranscludeFn, preLinkFns, postLinkFns, previousCompileContext)

Source from the content-addressed store, hash-verified

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) {

Callers 1

applyDirectivesToNodeFunction · 0.70

Calls 15

concatMethod · 0.80
extendFunction · 0.70
isFunctionFunction · 0.70
jqLiteIsTextNodeFunction · 0.70
removeCommentsFunction · 0.70
wrapTemplateFunction · 0.70
trimFunction · 0.70
replaceWithFunction · 0.70
collectDirectivesFunction · 0.70
isObjectFunction · 0.70
markDirectivesAsIsolateFunction · 0.70
mergeTemplateAttributesFunction · 0.70

Tested by

no test coverage detected