angularJS自定义指令中elem和elem [0]之间的差异?

时间:2018-05-25 03:17:52

标签: javascript arrays angularjs angularjs-directive element

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 [0]之间有什么区别?

感谢任何帮助,谢谢!

2 个答案:

答案 0 :(得分:0)

根据angularJs documentation,它返回jQuery对象。如果您对elem[0].focus()感到恼火,可以使用$(elem).focus()

答案 1 :(得分:0)

基本上这些是显而易见的差异;

  1. elem是angular
  2. 中的jQlite实例
  3. elem [0]是原生javascript对象,没有jQlite 实例所以你不能使用任何jquery DOM方法,但只能使用native javascript中的方法。