MCPcopy Create free account
hub / github.com/apache/cloudstack / applyDirectivesToNode

Function applyDirectivesToNode

tools/ngui/static/js/lib/angular.js:4117–4413  ·  view source on GitHub ↗

* Once the directives have been collected, their compile functions are executed. This method * is responsible for inlining directive templates as well as terminating the application * of the directives if the terminal directive has been reached. * * @param {Array} directives Arra

(directives, compileNode, templateAttrs, transcludeFn, jqCollection)

Source from the content-addressed store, hash-verified

4115 * @returns linkFn
4116 */
4117 function applyDirectivesToNode(directives, compileNode, templateAttrs, transcludeFn, jqCollection) {
4118 var terminalPriority = -Number.MAX_VALUE,
4119 preLinkFns = [],
4120 postLinkFns = [],
4121 newScopeDirective = null,
4122 newIsolateScopeDirective = null,
4123 templateDirective = null,
4124 $compileNode = templateAttrs.$$element = jqLite(compileNode),
4125 directive,
4126 directiveName,
4127 $template,
4128 transcludeDirective,
4129 childTranscludeFn = transcludeFn,
4130 controllerDirectives,
4131 linkFn,
4132 directiveValue;
4133
4134 // executes all directives on the current element
4135 for(var i = 0, ii = directives.length; i < ii; i++) {
4136 directive = directives[i];
4137 $template = undefined;
4138
4139 if (terminalPriority > directive.priority) {
4140 break; // prevent further processing of directives
4141 }
4142
4143 if (directiveValue = directive.scope) {
4144 assertNoDuplicate('isolated scope', newIsolateScopeDirective, directive, $compileNode);
4145 if (isObject(directiveValue)) {
4146 safeAddClass($compileNode, 'ng-isolate-scope');
4147 newIsolateScopeDirective = directive;
4148 }
4149 safeAddClass($compileNode, 'ng-scope');
4150 newScopeDirective = newScopeDirective || directive;
4151 }
4152
4153 directiveName = directive.name;
4154
4155 if (directiveValue = directive.controller) {
4156 controllerDirectives = controllerDirectives || {};
4157 assertNoDuplicate("'" + directiveName + "' controller",
4158 controllerDirectives[directiveName], directive, $compileNode);
4159 controllerDirectives[directiveName] = directive;
4160 }
4161
4162 if (directiveValue = directive.transclude) {
4163 assertNoDuplicate('transclusion', transcludeDirective, directive, $compileNode);
4164 transcludeDirective = directive;
4165 terminalPriority = directive.priority;
4166 if (directiveValue == 'element') {
4167 $template = jqLite(compileNode);
4168 $compileNode = templateAttrs.$$element =
4169 jqLite(document.createComment(' ' + directiveName + ': ' + templateAttrs[directiveName] + ' '));
4170 compileNode = $compileNode[0];
4171 replaceWith(jqCollection, jqLite($template[0]), compileNode);
4172 childTranscludeFn = compile($template, transcludeFn, terminalPriority);
4173 } else {
4174 $template = jqLite(JQLiteClone(compileNode)).contents();

Callers 2

compileNodesFunction · 0.85
compileTemplateUrlFunction · 0.85

Calls 13

assertNoDuplicateFunction · 0.85
isObjectFunction · 0.85
safeAddClassFunction · 0.85
replaceWithFunction · 0.85
compileFunction · 0.85
JQLiteCloneFunction · 0.85
trimFunction · 0.85
collectDirectivesFunction · 0.85
mergeTemplateAttributesFunction · 0.85
compileTemplateUrlFunction · 0.85
isFunctionFunction · 0.85
addLinkFnsFunction · 0.85

Tested by

no test coverage detected