MCPcopy Create free account
hub / github.com/cafebazaar/blacksmith / compileTemplateUrl

Function compileTemplateUrl

web/static/bower_components/angular/angular.js:8429–8541  ·  view source on GitHub ↗
(directives, $compileNode, tAttrs,
        $rootElement, childTranscludeFn, preLinkFns, postLinkFns, previousCompileContext)

Source from the content-addressed store, hash-verified

8427
8428
8429 function compileTemplateUrl(directives, $compileNode, tAttrs,
8430 $rootElement, childTranscludeFn, preLinkFns, postLinkFns, previousCompileContext) {
8431 var linkQueue = [],
8432 afterTemplateNodeLinkFn,
8433 afterTemplateChildLinkFn,
8434 beforeTemplateCompileNode = $compileNode[0],
8435 origAsyncDirective = directives.shift(),
8436 derivedSyncDirective = inherit(origAsyncDirective, {
8437 templateUrl: null, transclude: null, replace: null, $$originalDirective: origAsyncDirective
8438 }),
8439 templateUrl = (isFunction(origAsyncDirective.templateUrl))
8440 ? origAsyncDirective.templateUrl($compileNode, tAttrs)
8441 : origAsyncDirective.templateUrl,
8442 templateNamespace = origAsyncDirective.templateNamespace;
8443
8444 $compileNode.empty();
8445
8446 $templateRequest(templateUrl)
8447 .then(function(content) {
8448 var compileNode, tempTemplateAttrs, $template, childBoundTranscludeFn;
8449
8450 content = denormalizeTemplate(content);
8451
8452 if (origAsyncDirective.replace) {
8453 if (jqLiteIsTextNode(content)) {
8454 $template = [];
8455 } else {
8456 $template = removeComments(wrapTemplate(templateNamespace, trim(content)));
8457 }
8458 compileNode = $template[0];
8459
8460 if ($template.length != 1 || compileNode.nodeType !== NODE_TYPE_ELEMENT) {
8461 throw $compileMinErr('tplrt',
8462 "Template for directive '{0}' must have exactly one root element. {1}",
8463 origAsyncDirective.name, templateUrl);
8464 }
8465
8466 tempTemplateAttrs = {$attr: {}};
8467 replaceWith($rootElement, $compileNode, compileNode);
8468 var templateDirectives = collectDirectives(compileNode, [], tempTemplateAttrs);
8469
8470 if (isObject(origAsyncDirective.scope)) {
8471 markDirectivesAsIsolate(templateDirectives);
8472 }
8473 directives = templateDirectives.concat(directives);
8474 mergeTemplateAttributes(tAttrs, tempTemplateAttrs);
8475 } else {
8476 compileNode = beforeTemplateCompileNode;
8477 $compileNode.html(content);
8478 }
8479
8480 directives.unshift(derivedSyncDirective);
8481
8482 afterTemplateNodeLinkFn = applyDirectivesToNode(directives, compileNode, tAttrs,
8483 childTranscludeFn, $compileNode, origAsyncDirective, preLinkFns, postLinkFns,
8484 previousCompileContext);
8485 forEach($rootElement, function(node, i) {
8486 if (node == compileNode) {

Callers 1

applyDirectivesToNodeFunction · 0.85

Calls 15

isFunctionFunction · 0.85
jqLiteIsTextNodeFunction · 0.85
removeCommentsFunction · 0.85
wrapTemplateFunction · 0.85
trimFunction · 0.85
replaceWithFunction · 0.85
collectDirectivesFunction · 0.85
isObjectFunction · 0.85
markDirectivesAsIsolateFunction · 0.85
mergeTemplateAttributesFunction · 0.85
applyDirectivesToNodeFunction · 0.85
forEachFunction · 0.85

Tested by

no test coverage detected