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