Angularjs:获取控制器中的元素

我是angularjs的新手,我知道$scope表示控制器和视图之间的连接,但是除了寻找class="ng-scope"来获得范围元素,还有一种方法,我的意思是这样的:

 function someControllerFunc($scope){ $scope.element; } 

我知道同一个控制器可以分配给多个范围,所以也许这是不可能的。

您可以将元素传递给控制器​​,就像范围一样:

 function someControllerFunc($scope, $element){ } 

$element$compileProvider$controllerProvider的四个$compileProvider ,然后$compileProvider 。 只有在询问的情况下,喷油器才将控制器function注入本地。

四位当地人是:

  • $scope
  • $element
  • $attrs
  • $transclude

官方文档: AngularJS $编译服务API参考 – 控制器

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); 

我不知道你到底是什么意思,但希望它能帮助你。
通过这个指令你可以访问控制器内部的DOM元素
这是帮助您将元素集中在控制器内的示例

 .directive('scopeElement', function () { return { restrict:"A", // E-Element A-Attribute C-Class M-Comments replace: false, link: function($scope, elem, attrs) { $scope[attrs.scopeElement] = elem[0]; } }; }) 

现在,在HTML里面

 <input scope-element="txtMessage" > 

那么,在控制器里面:

 .controller('messageController', ['$scope', function ($scope) { $scope.txtMessage.focus(); }])