Ich habe einige Zeit damit verbracht, irgendeine Dokumentation für $ element zu finden, aber ich konnte keine in offiziellen Dokumenten finden.
$element
ist eine von vier Einheimischen, dass $compileProvider
zu $controllerProvider
gibt, die dann zu $injector
gegeben wird. Der Injektor injiziert lokal nur dann in Ihre Controller-Funktion, wenn Sie gefragt werden.
Die vier Einheimischen sind:
$scope
$element
$attrs
$transclude
Die offizielle Dokumentation: AngularJS $compile Service API Reference - controller
Der Quellcode von Github angular.js/compile.js:
function setupControllers($element, attrs, transcludeFn, controllerDirectives, isolateScope, scope) {
var elementControllers = createMap();
for (var controllerKey in controllerDirectives) {
var directive = controllerDirectives[controllerKey];
var locals = {
$scope: directive === newIsolateScopeDirective || directive.$$isolateScope ? isolateScope : scope,
$element: $element,
$attrs: attrs,
$transclude: transcludeFn
};
var controller = directive.controller;
if (controller == '@') {
controller = attrs[directive.name];
}
var controllerInstance = $controller(controller, locals, true, directive.controllerAs);