angularJS 自定义指令中 elem 和 elem[0] 的区别?

Difference between elem and elem[0] in angularJS custom directives?

angular.module('todomvc')
.directive('todoFocus', function ($timeout) {
    'use strict';

    return function (scope, elem, attrs) {
        scope.$watch(attrs.todoFocus, function () {
                $timeout(function () {
                    elem[0].focus();
                }, 0, false);
        });
    };
});

我最近在分析 JS 示例代码 (angularJS) 的自定义指令时遇到了这行,这让我很沮丧。

elem[0].focus();

当我试图改变 elem[0].focus();到 elem.focus();整个指令是行不通的。但在我之前尝试创建一个包含 elem.bind('keydown', someFunction(){}); 的自定义指令时单独没有 [0] 的 elem 工作正常。

所以我的问题是:elem 和 elem[0] 在创建这些自定义指令时有什么区别?

感谢任何帮助,谢谢!

根据angularJsdocumentation,它returnsjQuery对象。如果您对 elem[0].focus() 感到恼火,您可以使用 $(elem).focus()

基本上这些都是明显的区别;

  1. elem 是 angular
  2. 中的 jQlite 实例
  3. elem[0] 是原生 javascript 对象,没有 jQlite 实例,因此您不能使用任何 jquery DOM 方法,而只能使用本机方法 javascript.
  4. 中的方法