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

Function getControllers

code/songhop/www/lib/angular/angular.js:7489–7533  ·  view source on GitHub ↗
(directiveName, require, $element, elementControllers)

Source from the content-addressed store, hash-verified

7487
7488
7489 function getControllers(directiveName, require, $element, elementControllers) {
7490 var value, retrievalMethod = 'data', optional = false;
7491 var $searchElement = $element;
7492 var match;
7493 if (isString(require)) {
7494 match = require.match(REQUIRE_PREFIX_REGEXP);
7495 require = require.substring(match[0].length);
7496
7497 if (match[3]) {
7498 if (match[1]) match[3] = null;
7499 else match[1] = match[3];
7500 }
7501 if (match[1] === '^') {
7502 retrievalMethod = 'inheritedData';
7503 } else if (match[1] === '^^') {
7504 retrievalMethod = 'inheritedData';
7505 $searchElement = $element.parent();
7506 }
7507 if (match[2] === '?') {
7508 optional = true;
7509 }
7510
7511 value = null;
7512
7513 if (elementControllers && retrievalMethod === 'data') {
7514 if (value = elementControllers[require]) {
7515 value = value.instance;
7516 }
7517 }
7518 value = value || $searchElement[retrievalMethod]('$' + require + 'Controller');
7519
7520 if (!value && !optional) {
7521 throw $compileMinErr('ctreq',
7522 "Controller '{0}', required by directive '{1}', can't be found!",
7523 require, directiveName);
7524 }
7525 return value || null;
7526 } else if (isArray(require)) {
7527 value = [];
7528 forEach(require, function(require) {
7529 value.push(getControllers(directiveName, require, $element, elementControllers));
7530 });
7531 }
7532 return value;
7533 }
7534
7535
7536 function nodeLinkFn(childLinkFn, scope, linkNode, $rootElement, boundTranscludeFn) {

Callers 1

nodeLinkFnFunction · 0.70

Calls 2

isStringFunction · 0.70
forEachFunction · 0.70

Tested by

no test coverage detected