有没有办法访问控制器div中的div或控制器定义的div div 而没有使用和类或id定义它们只需使用$ scope。访问角度控制器定义的元素
<div ng-controller="gridController">
<div></div> // < -- I want to access this element
</div>
为了更具体一点,角保存并允许访问ng控制器被调用的元素DOM信息?
有没有办法访问控制器div中的div或控制器定义的div div 而没有使用和类或id定义它们只需使用$ scope。访问角度控制器定义的元素
<div ng-controller="gridController">
<div></div> // < -- I want to access this element
</div>
为了更具体一点,角保存并允许访问ng控制器被调用的元素DOM信息?
可以通过注入角可变$element
到控制器中访问的控制是在限定的元件
angular.module('myApp')
.controller('SomeCtrl',['$scope', '$element', function($scope, $element) {
$scope.buttonClick = function() {
$element.find('div').css('background-color', '#f00');
}
}]);
如果jQuery是包含在项目中,$element
将是元件的jQuery对象控制器是定义(在你的例子中的外部股利)。您可以使用标准的jQuery指令来访问其子元素。访问一个未命名的子div会要求你知道它的位置,或者使用其他一些标准来定位它。
如果未安装jQuery,则angular包含jQueryite,它是jQuery的一个子集,允许您使用大多数jQuery选择器来定位元素,但缺少大多数其他操作功能。
但是,通常被认为是不好的做法来访问,特别是在控制器内操纵DOM。由于jQuery将变量绑定到html的方式,如果您从某些函数对DOM进行更改,angular可能不会选择这些更改并在下一个绑定循环时覆盖它们。为了避免这种情况,您应该在角度指令内完成大部分DOM操作。然而,有时候,从控制器执行它更容易...如果您要这样做,您应该了解$apply
和$digest
。
控制器没有DOM的概念,它应该保持这种方式,否则你会冒很大的风险编写不可测试的代码。这是角度框架中问题分离的一部分。一个控制器可以绑定到多个不同的元素,甚至不同的指令的控制器功能,并有知道的方式告诉他们分开。
如果您试图对DOM做任何事情,您应该使用指令。
给出更多有关什么你想在问题更多的指导元素来实现,以达到自己的目标可以给予。
你究竟在做什么?有很多方法可以完成你所描述的内容。 – jadarnel27 2014-11-25 00:09:27
我想要访问第一个div或指向的element.target – SamSamet 2014-11-25 00:10:22
为了更具体一些角度保存并允许访问ng-controller被调用的元素DOM信息? – SamSamet 2014-11-25 00:16:59