(directives, $compileNode, tAttrs,
$rootElement, childTranscludeFn, preLinkFns, postLinkFns, previousCompileContext)
| 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) { |
no test coverage detected