何时使用Angular的$元素

ell*_*t-j 7 javascript angularjs

我已经看到了一些代码示例,其中$ element被注入到角度控制器中.我花了一些时间试图找到$元素的任何文档,但还没有找到任何在angulars官方文档.

什么是$ element服务,我何时应该使用它,以及它使用的最佳实践是什么?

Mar*_*rie 9

$element是一个jqlite(或jQuery,如果它可用)包装对象,包含对一些DOM对象的引用以及一些与它们交互的有用函数.任何时候您需要对DOM进行更改$element.

例如......如果您需要将一个类添加到指令DOM对象,您将注入$element并调用

$element.addClass("my-class")
Run Code Online (Sandbox Code Playgroud)

您可以在此处查看文档


Mat*_*een 5

当您注入$element控制器时,您将获得调用控制器的元素的 JQlite 包装版本。在指令控制器的情况下,它将是指令附加到的任何元素。我能找到的文档中唯一提到的是$compile description

您可以在以下示例中看到:

angular.module('myApp', [])
  .controller('testCtrl', function($scope, $element) {
    console.log($element);
  })
  .directive('testDirective', function() {
    return {
      controller: function($scope, $element) {
        console.log($element);
      }
    }
  })
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<body ng-app="myApp">
  <div ng-controller="testCtrl" id="controller">Controller</div>
  <div test-directive id="directive">Directive</div>
</body>
Run Code Online (Sandbox Code Playgroud)

最佳实践是,除了在指令中,更具体地说,通常在链接函数中,您不要进行任何 DOM 更改。在这种情况下,您几乎不想$element在控制器中使用 ,因为这很可能意味着您从错误的角度接近解决方案。