Разница между elem и elem [0] в пользовательских директивах angularJS? - PullRequest
0 голосов
/ 25 мая 2018
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].фокус ();to elem.focus ();Вся директива просто не работает.Но в моей предыдущей попытке создать пользовательскую директиву, включающую elem.bind ('keydown', someFunction () {});Один elem без [0] работал нормально.

Итак, мой вопрос: в чем разница между elem и elem [0] при создании этих пользовательских директив?

Любая помощь приветствуется, спасибо!

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

В основном это очевидные различия;

  1. elem - это экземпляр jQlite в angular
  2. elem [0] - это собственный объект javascript, и экземпляр jQlite отсутствует, так что вы можете 't использовать любой JOM-метод DOM, но только нативные методы в javascript.
0 голосов
/ 25 мая 2018

Согласно angularJs документации , он возвращает объект jQuery.Если вас раздражает elem[0].focus(), вы можете использовать $(elem).focus()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...