Angularjs - получить элемент тела внутри директивы - программирование
Подтвердить что ты не робот

Angularjs - получить элемент тела внутри директивы

Как получить элемент body в директиве angular? моя цель - сделать то, что вы делаете с внутренней директивой jquery $('body').innerWidth();. Я не хочу использовать jquery, но angular встроенная реализация jqlite.

4b9b3361

Ответ 1

Если вам нужно получить доступ к элементу body из директивы, применяемой к другому элементу, вы можете использовать $document сервис вроде так..

app.directive("myDirective", function($document) {
  return function(scope, element, attr) {
    var bodyWidth = $document[0].body.clientWidth;
    console.log("width of body is "+ bodyWidth);
  };
});

<button my-directive>Sample Button</button>

Вы также можете использовать методы обхода DOM, предоставляемые в jqLite (хотя они намного менее мощны, чем предлагает jQuery). Например, вы можете сделать рекурсивный поиск, используя метод angular.element.parent(), чтобы найти тег body.

Ответ 2

Еще одна вариация с использованием реализации find(), которая включена в angular jQLite:

app.directive("myDirective", function() {
    return function(scope, element, attr) {

    var body = angular.element(document).find('body');
    console.log(body[0].offsetWidth);

    };
});