如何在angular指令中获取body
元素?我的目标是用jquery $('body').innerWidth();
inside指令做什么。我不想使用jquery而是使用angular内置的jqlite实现。
答案 0 :(得分:33)
如果您需要从另一个元素上应用的指令中访问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>
您还可以使用jqLite中提供的DOM遍历方法(尽管它们比jQuery提供的功能强大得多)。例如,您可以使用angular.element.parent()
方法进行递归查找以查找正文标记。
答案 1 :(得分:10)
另一个使用find()
实现的变体,它包含在angular的jQLite中:
app.directive("myDirective", function() {
return function(scope, element, attr) {
var body = angular.element(document).find('body');
console.log(body[0].offsetWidth);
};
});