Невозможно сделать это в собственности require
, основанной на угловом исходном коде. Угловой только один из двух вариантов:
- Строка, содержащая комбинацию флага (^ /? /? ^/Пустой) и имя одной директивы.
- Массив строк, соответствующих критериям в опции номер один.
Таким образом, самым свежим вы могли бы стать сочетание некоторых требуемых родительских контроллеров и некоторых дополнительных родительских контроллеров.
//AngularJS 1.2
function getControllers(require, $element) {
var value, retrievalMethod = 'data', optional = false;
if (isString(require)) {
while((value = require.charAt(0)) == '^' || value == '?') {
require = require.substr(1);
if (value == '^') {
retrievalMethod = 'inheritedData';
}
optional = optional || value == '?';
}
value = $element[retrievalMethod]('$' + require + 'Controller');
...
if (!value && !optional) {
throw $compileMinErr('ctreq',
"Controller '{0}', required by directive '{1}', can't be found!",
require, directiveName);
}
return value;
} else if (isArray(require)) {
value = [];
forEach(require, function(require) {
value.push(getControllers(require, $element));
});
}
return value;
}
Документы [здесь] (http://docs.angularjs.org/api/ng.$compile) – Andyrooger